一个引用类型为Person的变量,能否指向Student类型的实例?
Person p = new Student(); // ???default方法无法访问字段,而抽象类的普通方法可以访问实例字段。
对于静态字段,无论修改哪个实例的静态字段,效果都是一样的:所有实例的静态字段都被修改了,原因是静态字段并不属于实例:
调用实例方法必须通过一个实例变量,而调用静态方法则不需要实例变量,通过类名就可以调用。
推荐用类名来访问静态字段。
因为interface是一个纯抽象类,所以它不能定义实例字段。但是,interface是可以有静态字段的,并且静态字段必须为final类型:
public interface Person { public static final int MALE = 1; public static final int FEMALE = 2; }
实际上,因为interface的字段只能是public static final类型,所以我们可以把这些修饰符都去掉,上述代码可以简写为:
public interface Person { // 编译器会自动加上public statc final: int MALE = 1; int FEMALE = 2; }
用final修饰class可以阻止被继承:
用final修饰method可以阻止被子类覆写:
用final修饰field可以阻止被重新赋值:
用final修饰局部变量可以阻止被重新赋值:
一个.java文件只能包含一个public类,但可以包含多个非public类。
原文:https://www.cnblogs.com/deerlet/p/14457518.html