一个引用类型为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