static
- 同一个类中,非静态方法可以调用静态方法,但静态方法不能被非静态方法调用(类加载先后的问题)。
抽象类(abstract)
- 抽象类的子类必须完成抽象方法的重写(除非子类也是抽象的)
- 抽象类是一种约束,可以用于搭建整体框架
- 抽象类不能被new(实例化)
- 抽象类中可以存在普通方法,但抽象方法只能存在于抽象类中
- 抽象类中存在构造器(便于子类在创建对象时调用父类的方法进行初始化操作)* 抽象类的主要用途有:
定义规范:抽象类可以定义一些规范和标准,让子类去实现具体的细节,从而保证代码的一致性和可维护性。
提高代码复用性:抽象类中的非抽象方法可以被子类继承或者重写,从而提高代码的复用性。
简化代码实现:抽象类可以将一些通用的方法和属性封装起来,让子类去实现具体的细节,从而简化代码实现。
接口(interface)
接口是一种约束,约束和实现分离(接口自己无法写方法),可分给不同的人实现
接口的本质是契约
接口中一般只有方法的定义,接口中的属性都是常量
实现一个接口要完成(重写)接口里的方法
接口可以实现类似多继承的效果
接口中的默认方法
- 第三点:如果不进行重写,则test类不知道调用哪个default方法
内部类
通过外部类的对象进行创建
可以获取外部类的私有属性
- 一个Java文件中只有一个Public类,但可以有很多普通类(不必是内部类)
- 匿名内部类