多态
-
是什么:
-
父类引用指向子类对象,多态发生在赋值的时候
-
-
缺点:丢失子类属性
-
如果父类没有,不管子类有没有,都报错
-
如果父类有,但是子类没有,调用父类的
-
如果父类有,子类也有,除了成员方法用子类(因为重写),其他的都用父类
-
-
优点
-
高内聚低耦合
-
-
多态发生的地方
-
直接写:
Person p = new Pupil()
-
形参实参:形参是父类引用,实参是子类对象
-
返回值是子类对象,用父类引用接收
-
隐式多态:子类对象调用父类的成员方法,此方法体内部就是一个多态的环境
-
-
-
向上转型和向下转型
-
向上转型(多态)
-
向下转型instanceof
-
抽象
-
-
abstract,抽象的关键字
-
被abstract修饰的类是抽象类,不能创建对象,但是有构造方法
-
被abstract修饰的方式是抽象方法
-
abstract不能修饰变量
-
被abstract修饰的类就是用来被继承的
-
被abstract修饰的方法就是用来被覆写的
-
与private、static、final不能并列修饰同一方法
抽象方法和抽象类的关系:
-
在抽象类内可以没有抽象方法(个数0-n 都可以)
-
抽象方法必须在抽象类内或接口内
-
接口
-
定义(语法):权限修饰符 + interface + 接口名{}
-
解决问题:弥补了java单继承的缺点
-
接口可以多实现,用 “,” 分割
-
接口内所有的变量都是共有的静态常量(常量规范:全部大写)
-
接口内静态方法默认共有,成员方法默认是抽象方法
-
接口内没有构造方法,不能够被实例化,不能创建对象
-
接口的实现类必须实现接口的所有抽象方法,如果没有全部实现,则该类必须是抽象类
-
jdk1.8之后,接口内可以出现静态方法和默认方法
-
静态方法怎么效用:接口名.方法名
-
默认方法怎么调用,接口的实现类对象.方法名
-
-