一、final关键字
final可以修饰类、方法和变量,被修饰的这些类、方法和变量都有 不可更改 的意思。
final修饰的类:该类不能被继承
final修饰的方法:该方法不能被重写Override
final修饰的变量:该变量不能被重新赋值
- final修饰成员变量:声明时需要同时初始化,可以 直接赋值 或者通过 静态代码块 赋值。
- final修饰局部变量:声明时可以不初始化,在使用前需要一次赋值,并且只能赋一次值。也可以通过构造代码块初始化。
二、接口
接口是一种引用数据类型(还有数组和类),继承它的实现类需要重写其中的所有抽象方法。
接口中只能存在以下5种内容:
-
自定义常量:默认是
static final
的; -
抽象方法:给实现类重写,默认是
abstract
的 -
默认方法(java8):实现类重写抽象方法时,方法体都是一样的,那么可以使用默认方法简化
public default void show() { System.out.println("hello"); }
-
静态方法(java8):作为工具方法使用,使用类名.静态方法调用
-
私有方法(java9):只能在接口内部使用
接口之间支持多继承,但不能相互实现。
三、多态
多态发生在继承或实现的关系下,而且子类需要重写父类的方法。在格式上的体现为:父类引用指向子类。
多态产生的效果之和子类与父类之间的方法重写有关,和其他成员无关(成员变量)。
四、内部类
内部类分为成员内部类和局部内部类。
成员内部类:
定义在类中方法外。内部类可以访问外部类的所有成员。当内部类有成员变量和外部类的成员变量重名时,调用内部成员变量的格式:this.变量
,调用外部类的成员变量的格式:外部类.this.变量
局部内部类:
定义在成员方法中,只能在该成员方法中进行对象的创建和使用,局部内部类可以访问外部类和所属方法的的所有内容。但是当这三个地方有着一个重名的变量的时候,局部内部类不能访问和修改所属方法中的局部变量和类中的成员变量,根本原因在于声明周期的不同。
匿名内部类是局部内部类的一种,这个类只使用一次。可以使用Lambda表达式简化写法。
网友评论