多态
多态的概念;
当不同的对象完成是产生不同的状态
要实现多态的条件(1.向上转型 2.子类和父类有同名的覆盖/重写的方法 3.通过父类对象调用父类和子类重写的方法)
什么是向上转型
父类类型 对象名= new 子类类型
什么是重写
子类和父类的方法名一样,参数列表一样,返回值一样,可以使用@override来注解
注意事项:1.被final,static,private修饰的方法不能进行重写,
2.父类的访问修饰限定符一定要小于等于子类的访问修饰限定符
3.方法的返回值可以不相同但是必须是父子类关系
4.构造方法不能重写
什么是动态绑定?
(先向上转型,然后通过父类引用调用父类和子类重写的方法,调用子类的方法,运行时的过程就叫动态绑定)
什么是静态绑定?
在程序运行前就知道方法是属于哪个类,在编译是直接连接到那个类中
什么是向下转型
就是让父类调用子类独有的方法,子类类型 类名=(强制转换)父类类名,但是要加instanceof增加安全性
什么是多态
当引用的子类的对象不一样的时候,通过父类的引用调用重写的方法,
向上转型:
有3种方法
1.直接赋值
2.方法传参的方式(把父类的类名当作参数)
3.返回值(定义返回的类型最好是父类)
2.子类和父类有同名的覆盖/重写的方法
方法的重写:子类和父类的方法名一样,参数列表一样,返回值一样
动态绑定
向下转型
多态
先把子类对象实例化,然后使用向上转型把父类的类型当作参数,调用重写的方法,最后在调用向上转型方法把子类要输出的东西放进去,从而达到想要输出的东西
抽象类
abstract修饰的类叫抽象类,抽象类不可以实例化,但是内部可以包含普通的成员方法和成员变量,抽象类只能用来被继承
当一个类含有抽象方法时,该类必须使用abstract修饰
abstract修饰的方法叫抽象方法,不能是private和static修饰的
final和abstract是不能同时存在的
抽象类里面的抽象方法可以不写代码块