1.抽象类
1.1抽象方法特点
1.由abstract修饰的方法为抽象方法,抽象方法没有方法体,需要使用分号结尾
2.若类中包含抽象方法,那么该类必须使用关键字abstract声明成抽象类,final不能修饰抽象类
3.子类需要实现父类的所有抽象方法;若不想实现父类所有抽象方法,子类也需要声明为抽象类,用abstract修饰
4.抽象类可以提供构造器,但不能实例化,没有意义
1.2抽象方法的意义
1. 为其子类提供一个公共的父类型
2.封装子类中重复的内容,如成员变量和方法
3.定义抽象方法,子类虽然有不同的实现逻辑,但该方法的定义却是一致的。
2.接口
2.1接口特点
1.接口关键字interface
2.接口可以修饰成员变量,默认public static final
3.接口可以修饰成员方法,默认public abstract
4.使用关键字implements可以实现接口中所有的抽象方法
5.若一个类中没有全部实现接口的抽象方法,必须用abstract声明成抽象类
2.2接口和接口之间的特点
1.接口和接口之间可以存在继承关系,一个接口可以通过extends继承到另一个接口
2.子接口可以继承父接口所有的抽象方法
3.子接口也可以有自己独有的抽象方法
4.要实现子接口,必须重写里面所有的抽象方法
2.3JDK1.8之后的新特性
1.提供默认方法:使用修饰词default修饰的具体方法体的方法
-该方法,默认使用public修饰
-该方法,逻辑不满足子类时子类可以重写
2.⽤static修饰的接口中的方法,表示是静态的方法。
-默认使用public修饰
3.枚举
3.1自定义类实现枚举
-
类内部创建一组对象,通常使用public static final关键字共同修饰,对外进行暴露
-
枚举对象名通常全部都会大写,这是常量的命名规范
-
可以提供属性,属性应使用private final共同修饰
-
将构造器私有化
-
属性,可以提供getXXX方法,但是不需要提供setXxx方法,属性应该是只读的。
3.2enum关键字实现枚举
-
使用enum关键字定义一个枚举,默认会继承java.lang.Enum类,而且是一个final类,因此不能再继承其他类
-
必须在枚举类的第一行声明枚举类对象。有多个枚举对象时,使用逗号隔开,最后一个用分号结尾
-
可以提供私有的属性
-
可以提供构造器,必须是私有的,如果构造器有形参,定义对象时必须显式调用构造器
-
如果使用无参构造器创建枚举对象,则定义对象时,小括号可以省略