接口&&多态&&构造函数&&关键字
day06
抽象类的局限性(与接口的区别)
-
抽象类可以定义非抽象方法,避免子类重复实现这些方法,提高代码重用性;接口只能包含抽象方法;jdk1.8之后接口可以包含默认方法。
- 一个类只能继承一个直接父类(可能是抽象类),却可以实现多个接口;(接口弥补了Java的单继承)类与类之间只能是单继承(包括抽象类),接口与接口之间可以是多实现,多继承。
- 抽象类可以定义普通的成员变量,接口只能定义public static final的成员变量。
接口
-
成员
- 公共的静态常量
- 公共的抽象方法
-
继承
接口与接口之间可以多实现,多继承
原因:
因为接口中的方法都是没有实现的,所以就算有两个父接口的方法名称相同,子类实现接口的时候也不会有什么影响,重写即可,所以接口与接口之间是存在多继承的。
多态
- 让父类的变量指向子类对象的地址值。
-
特点
- 成员方法:编译看左,运行看右。
- 成员变量:编译看左,运行看左。
-
转型
- 向下转型(强转)
- instanceof关键字
- 向上转型
- 向下转型(强转)
构造方法
- 父子类问题
- 父类如果只有有参构造,那么子类的构造函数中需要显式的调用父类的有参构造。
day07
关键字
-
static:非静态能够直接调用静态方法和变量,静态方法不能够直接调用非静态的方法和变量。
-
super:子类对父类的引用,只能在非静态的方法中调用。
-
final:
- final修饰的类不可以被继承,但可以创建对象,如String。
- final修饰的方法不可以被重写,子类重写的方法可以加上final修饰。
-
final修饰局部变量,只能够赋值一次,当修饰的是引用的类型的时候,不能被重新赋值,但是可以修改对象的属性。
-
final修饰成员变量,必须在定义的时候进行赋值,不会有自动初始化值,(或者在构造方法中进行赋值)。