重写,多态与对象类型转换

重写

重写:需要有继承的关系,子类重写父类的方法

  1. 方法名必须相同

  2. 参数列表必须相同

  3. 修饰符:范围可以扩大但是不能缩小 public>protected>Default>private

  4. 抛出异常,范围可以被缩小但是不可以扩大 Exception> ClassNotFoundException

重写的意义:子类与父类的的方法必须一致,但是方法体不同;

为啥需要重写:父类的功能子类不一定需要,或者不一定满足,所有就需要自己去实现自己想要的方法(Alt+Insert 点击override)

多态

多态注意事项:

  1. 多态是方法多态,属性是没有多态的

  2. 父类和子类,是需要有联系的才可以,否则会出现类型转换异常!ClassNotFoundException

  3. 存在条件:两个类之间是继承的关系,方法需要重写,父类引用指向子类对象! Father fa1=new Son();

    1. static方法属于类,不属于实例
    2. final 常量
    3. private方法;

    上述三种情况都是不可以修饰的方法都是不可以有多态的。

    /Father fa1=new Son();/

    这种多态情况,如果使用fa1实例去调用方法,如果子类Son中重写了父类Father的方法,那么执行子类的方法。如果父类与子类都有相同的方法,那么都执行父类的中的方法;

 

instanceof与类型转换

 

子类转父类由于子类已经继承的父类的所有的方法,所有只需要删除自己特有的方法即可转换成功 (向上转型)

父类转子类因为需要重新开辟子类中特有方法的空间,所以需要强转。(向下转型)

  1. /Father fa1=new Son();/ 这种是父类的引用指向子类的对象

  2. 把子类转为父类,向上转型,直接转即可;(可能会丢失自己子类本来的一些方法)

  3. 把父类转子类,向下转型,需要强制转换(可能会丢失子类没有重写父类的一些方法)

posted @ 2021-03-25 16:02  HOTCOLD  阅读(41)  评论(0)    收藏  举报