面向对象知识点1

一个引用类型为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类。
posted @ 2021-02-28 18:48  星予  阅读(68)  评论(0)    收藏  举报