Java修饰符

Java修饰符

Java修饰符主要分为:

  1. 访问类修饰符;
  2. 非访问类修饰符;

修饰符一般放在语句的最前端,用来定义类、变量或者方法;

访问控制修饰符

访问控制符来保护类、变量、方法的访问,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 }

 

posted @ 2023-03-16 21:52  H年轻的心  阅读(52)  评论(0编辑  收藏  举报