Java修饰符()-java
Java修饰符()
Java修饰符
Java修饰符主要分为:
- 访问类修饰符;
- 非访问类修饰符;
修饰符一般放在语句的最前端,用来定义类、变量或者方法;
访问控制修饰符
访问控制符来保护类、变量、方法的访问,Java支持以下四种:
- default(默认)在同一个包内可见,不适用任何修饰符,使用对象:类、接口、方法、变量;
- private:在同一个类内可见。使用对象为变量、方法。注意不能修饰外部类;
- public:对所有类可见。使用对象为变量、类、接口、方法;
- protected:对同一包内的类和子类可见。使用对象为变量、方法。注意不能修饰外部类;
如下:
修饰符 | 当前类 | 同一包内访问 | 子孙类(同一包) | 子孙类(不同包) | 其他包 |
public | Y | Y | Y | Y | Y |
protected | Y | Y | Y | N | N |
default | Y | Y | Y | N | N |
private | Y | N | N | N | N |
私有访问修饰符private
私有访问是最严格的访问级别,被私有声明的方法、变量及构造方法只能被所属类访问,并且类、接口不能声明为private;
声明为私有变量只能通过类公共方法getter方法被外部类访问。
所以private主要用来隐藏类的实现细节,和保护类的数据;
1 public class Logger {
2 private String format;
3 public String getFormat() {
4 return this.format;
5 }
6 public void setFormat(String format) {
7 this.format = format;
8 }
9 }
该类有的私有变量format能够通过getFormat()方法来获取,也能通过setFormat()方法来设置。
公有访问修饰符public
public修饰的类、方法、构造方法、接口能够被任何其他类访问。
Java程序忠的main()方法必须用public修饰符修饰。
非访问修饰符
static修饰符:用来修饰类方法和类变量;
final修饰符:用来修饰类、变量、方法。final修饰的类不能被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,不允许修改;
abstract修饰符:用来创建抽象类、抽象方法;
synchronized和volatile修饰符:主要用户线程编程;
static修饰符:
静态变量:static修饰的对象变量为静态变量,无论实例化多少对象,变量只有一个拷贝,静态变量也就是类变量。局部变量不能声明为static变量;
静态方法:静态方法不能使用类的非静态方法。
例:
1 public class InstanceCounter {
2 private static int numinstances = 0;
3 protected static int getCount(){
4 return numinstances;
5 }
6 private static void addInstances(){
7 numinstances ++;
8 }
9 InstanceCounter(){
10 InstanceCounter.addInstances();
11 }
12 public static void main(String[] args){
13 System.out.println("Starting with " + InstanceCounter.getCount() +" instance");
14 for (int i=0; i<500; i++){
15 new InstanceCounter();
16 System.out.println(InstanceCounter.getCount() + " instance");
17 }
18 System.out.println("created "+InstanceCounter.getCount()+" instances" );
19 }
20 }
final修饰符
final表示最后的,最终的, 变量一旦赋值后就不能改变;
1 public class Test {
2 final int value = 10;
3 public static final int BOXWIDTH = 6;
4 static final String TITLE = "Manger";
5 public void changeValue(){
6 value = 12;//赋值将报错
7 }
8 }
Java修饰符
Java修饰符主要分为:
- 访问类修饰符;
- 非访问类修饰符;
修饰符一般放在语句的最前端,用来定义类、变量或者方法;
访问控制修饰符
访问控制符来保护类、变量、方法的访问,Java支持以下四种:
- default(默认)在同一个包内可见,不适用任何修饰符,使用对象:类、接口、方法、变量;
- private:在同一个类内可见。使用对象为变量、方法。注意不能修饰外部类;
- public:对所有类可见。使用对象为变量、类、接口、方法;
- protected:对同一包内的类和子类可见。使用对象为变量、方法。注意不能修饰外部类;
如下:
修饰符 | 当前类 | 同一包内访问 | 子孙类(同一包) | 子孙类(不同包) | 其他包 |
public | Y | Y | Y | Y | Y |
protected | Y | Y | Y | N | N |
default | Y | Y | Y | N | N |
private | Y | N | N | N | N |
私有访问修饰符private
私有访问是最严格的访问级别,被私有声明的方法、变量及构造方法只能被所属类访问,并且类、接口不能声明为private;
声明为私有变量只能通过类公共方法getter方法被外部类访问。
所以private主要用来隐藏类的实现细节,和保护类的数据;
1 public class Logger {
2 private String format;
3 public String getFormat() {
4 return this.format;
5 }
6 public void setFormat(String format) {
7 this.format = format;
8 }
9 }
该类有的私有变量format能够通过getFormat()方法来获取,也能通过setFormat()方法来设置。
公有访问修饰符public
public修饰的类、方法、构造方法、接口能够被任何其他类访问。
Java程序忠的main()方法必须用public修饰符修饰。
非访问修饰符
static修饰符:用来修饰类方法和类变量;
final修饰符:用来修饰类、变量、方法。final修饰的类不能被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,不允许修改;
abstract修饰符:用来创建抽象类、抽象方法;
synchronized和volatile修饰符:主要用户线程编程;
static修饰符:
静态变量:static修饰的对象变量为静态变量,无论实例化多少对象,变量只有一个拷贝,静态变量也就是类变量。局部变量不能声明为static变量;
静态方法:静态方法不能使用类的非静态方法。
例:
1 public class InstanceCounter {
2 private static int numinstances = 0;
3 protected static int getCount(){
4 return numinstances;
5 }
6 private static void addInstances(){
7 numinstances ++;
8 }
9 InstanceCounter(){
10 InstanceCounter.addInstances();
11 }
12 public static void main(String[] args){
13 System.out.println("Starting with " + InstanceCounter.getCount() +" instance");
14 for (int i=0; i<500; i++){
15 new InstanceCounter();
16 System.out.println(InstanceCounter.getCount() + " instance");
17 }
18 System.out.println("created "+InstanceCounter.getCount()+" instances" );
19 }
20 }
final修饰符
final表示最后的,最终的, 变量一旦赋值后就不能改变;
1 public class Test {
2 final int value = 10;
3 public static final int BOXWIDTH = 6;
4 static final String TITLE = "Manger";
5 public void changeValue(){
6 value = 12;//赋值将报错
7 }
8 }