1.1 public
任何其它类、对象只要可以看到这个类的话,那么它就可以存取变量的数据,或使用方法
只有在使用 public 访问修饰符时,类的成员才可被同一包或不同包中的所有类访问。
也就是说,public 访问修饰符可以使类的特性公用于任何类。
1.2 protected
如果一个类中变量或方法有修饰字 protected,同一类,同一包可以使用。不同包的类要使用,必须是该类的子类可以存取变量或调用。
如果希望一个成员在当前包外可见,但仅仅是成员所在类的子类直接可见,就要使用 protected 修饰该成员。
1.3 private
private 访问修饰符是限制性最大的一种访问修饰符。
被声明为 private 的成员只能被此类中的其他成员访问,不能被类外看到。
继承体系结构中最高级别的类决不会被声明为 private 类。
1.4 defaulted
类是缺省的,该类具有包访问权限,只能被同一包中的其它类访问
2. static
用 static 修饰符修饰,可以是变量、方法或代码块。
类中的静态变量、方法或代码块属于类,而不属于某个特定的对象。
类的静态成员可以与类的名称一起使用,而无需创建类的对象。
静态变量或方法也称为类变量或类方法。
2.1 静态变量
1 public class TestDemo { 2 static int COUNT = 100; 3 } 4 public class Test { 5 public static void main(String[] args) { 6 System.out.println(TestDemo.COUNT);//可以直接通过类名进行调用,推荐使用 7 TestDemo ts = new TestDemo(); 8 System.out.println(ts.COUNT);//也可以通过某一对象尽心调用 9 } 10 }
2.2 静态方法
与静态方法相关的几个要点:
– 类的静态方法只能访问其他的静态成员
– 静态方法没有 this
– 静态方法不能被覆盖为非静态方法
1 public class TestDemo { 2 static int COUNT = 100; 3 int i = 10; 4 public static void say() { 5 // System.out.println(i);//静态方法中只能访问静态修饰的属性和方法 6 System.out.println(COUNT); 7 } 8 // main方法本身就是一个静态方法,是一个特殊的静态方法 9 public static void main(String[] args) { 10 say();// 静态方法中可以访问静态方法 11 } 12 }
2.3 静态代码块
形式:static { ……}
如果需要通过计算来初始化静态变量,可以声明一个静态块。
静态块仅在该类被加载时执行一次。
1 public class TestDemo { 2 private static int COUNT = 100; 3 static { 4 System.out.println(COUNT); 5 } 6 public static void main(String[] args) { 7 System.out.println(COUNT); 8 } 9 }
java类属性和对象属性的初始化顺序:
- 首先找到类中的所有静态声明语句(不管位置在哪),把他们初始化为缺省值;
- 然后再按照书写顺序依次处理每一个static的东西;
- 把对象属性初始化为缺省值;
- 按照书写顺序依次处理每一个对象属性的初始化语句最后执行构造函数;
1 public class Test { 2 // 代码块 3 { 4 System.out.println("3"); 5 } 6 { 7 System.out.println("4"); 8 } 9 static { 10 System.out.println("1"); 11 } 12 static { 13 System.out.println("2"); 14 } 15 public Test() { 16 System.out.println("构造函数"); 17 } 18 public static void main(String[] args) { 19 new Test(); 20 } 21 }
输出:1.2.3.4.构造函数
3. final
final 关键字:final 修饰符可应用于类、方法和变量。
1、final 在应用于类、方法和变量时意义是不同的,但本质是一样的:final 表示不可改变。
2、声明为 final 的类不能被继承。
3、声明的方法不能被重写,如果一个类是 final 类,那么它的所有方法都隐式的是 final 方法。
4、声明的变量必须赋初值,它实质上就是一个常量。
final修饰的对象或者变量在使用之前必须要初始化,否则报错
final修饰的对象或者变量如果在定义的时候没有初始化,则虚拟机会自动根据其类型初始化成对应的值
————————————————
版权声明:本文为CSDN博主「振华OPPO」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42257666/article/details/114115551