目录
final关键字
作用
final代表最终的意思,可以修饰成员方法,成员变量,类。
修饰效果
final修饰类:
表明该类是最终类,不能被继承(不能有子类,但可以有父类)。
final修饰方法:
final修饰方法:表明该方法是最终方法,不能被重写。
final修饰变量:
final修饰变量:表明该变量是一个常量,不能再次赋值。
final修饰局部变量:
- 变量是基本类型
final 修饰指的是基本类型的数据值不能发生改变。
- 变量是应用类型
final 修饰指的是引用类型的地址值不能发生改变,但是地址里面的内容是可以发生改变的。
注意事项和细节讨论
1.final修饰的属性又叫常量,一般用XX_XX(大写)来命名。
2.final修饰的属性在定义时,必须赋初值,并且以后不能再修改,赋值可以在如下位置之一:(定义时、在构造器中、在代码块中)。
3.如果final修饰的属性是静态的,则初始化的位置只能是:(1)定义时 (2)在静态代码块 不能在构造器中赋值。
4.final类不能被继承,但可以实例化对象。
5.如果类不是final类,但含有final方法,则该方法不能被重写,但可以被继承。
6.如果一个类已经是final类,没必要再将方法修饰成final方法。
7.final不能修饰构造方法。
8.final和static往往搭配使用,效率更高,不会导致类加载。底层编译器做了优化处理。
9.包装类(Integer,Double,Float,Boolean等都是final),String也是final类。
static关键字
概念
static是一个修饰符,用于修饰类的成员方法、类的成员变量。
特点
1. 被类的所有对象共享,这也是我们判断是否使用静态关键字的条件。
2. 可以通过类名调用。当然,也可以通过对象名调用【推荐使用类名调用】。
- 示例代码
class Student {
public String name; //姓名
public int age; //年龄
public static String university; //学校 共享数据!所以设计为静态!
public void show() {
System.out.println(name + "," + age + "," + university);
}
}
public class StaticDemo {
public static void main(String[] args) {
// 为对象的共享数据赋值
Student.university = "宠物学院";
Student s1 = new Student();
s1.name = "加菲猫";
s1.age = 4;
s1.show();
Student s2 = new Student();
s2.name = "史努比";
s2.age = 6;
s2.show();
}
}
访问特点
非静态的成员方法:
能访问静态&非静态的成员变量; 能访问静态&非静态的成员方法。
静态的成员方法:
只能访问静态的成员变量; 只能访问静态的成员方法。
总结:静态成员方法只能访问静态成员。