打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
继承,重写,多态

继承

  • 继承的本质是对某一类的抽象,从而实现对现实世界更好的建模。

  • extends的意思是"扩展",子类是父类的扩展

  • java中类只有单继承,没有多继承

  • 继承是类和类之间的一种关系。除此之外,类和类之间还有依赖、组合、聚合等。

  • 继承关系的两个类,一个为子类,一个为父类,子类继承父类,使用关键字extends来表示

  • 子类和父类之间从意义上讲应该具有"is a"的关系

重写

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

  1. 方法名必须相同
  2. 参数列表必须相同
  3. 修饰符:范围可以扩大: public > Protected > Default > private
  4. 抛出的异常可以被缩小,但不能扩大 ClassNotFoundException ---》 Exception

重写,子类的方法和父类必要一致,方法体不同!

为什么要重写?

  1. 父类的功能,子类不一定需要,或者不一定满足

    Alt insert : override;

  • object类
  • super
  • 方法重写

子类会继承父类的所有方法!

# Super
## super注意点
1. super调用父类的构造方法,必须在构造方法的第一个
2. super必须只能出现在子类的方法或者构造方法中
3. super 和 this 不能同时调用构造方法
## Vs this
​ 代表的对象不同:
​ this : 本身调用这个对象
​ super:代表父类对象的应用
​ 前提:
​ this :没有继承也可以使用
​ super:只能在继承条件才可以使用
​ 构造方法:
​ this();本类的构造
​ super();本类的构造
如果在意构造器,创建子类的对象时,父类的构造器应被优先考虑,super()仅在父类有无参构造器的时候才可以省略

多态

为什么要用多态?

如果要更改子类的某一个属性,就要新建一个类,创建对象。用一个判断,来改变属性,但是如果改多个子类的话。就要不断的用重载。很麻烦。代码的可扩展性减小、可维护性差。这个时候就可以用多态。

多态的用法

形参换成父类类型。在父类里加上一个方法。然后创建对象父类引用子类对象〈父类〉〈变量名〉= new〈子类〉。就可以直接调用。方便快捷又好使。
public static void main(String[] args) {    //当方法有static时,方法的调用只和左边,定义的数据类型有关    A a = new A();    a.test();    //父类的引用指向了子类    B b = new A();    b.test();}
public class Application {    public static void main(String[] args) {        //一个对象的实际类型是确定的,但是可以指向的引用类型就不确定了,父类的引用可以指向子类        //Student 能调用的方法都是自己的或者是继承的        Student s1 = new Student();        //Person 指向子类但是不能调用子类的方法,并且如果父类的方法被重写,则调用子类重写后的方法        Person s2 = new Student();        //对象能执行哪些方法,主要看对象左边的类型,和右边关系不大        s1.test();        s1.run();        s1.eat();        s2.eat();        s2.run();        //s2.test(); 编译不通过  需要将s2强制转换    }}
  1. 多态是方法的多态,属性没有多态
  2. 父类和子类有关系 不能强转 会有异常 ClassCastException
  3. 存在条件:有继承关系,方法需要重写,父类引用指向子类对象

不能重写的方法:

  1. static 方法属于类,不属于实例
  2. final 修饰
  3. private 方法

向上/向下转型

向上转型:父类的引用转向子类对象。自动进行类型转换。

Pet dog = new Dog(); // 转成 Pet dog = new Pet();

  • 此时通过父类引用子类对象调用的是子类继承或者重写的父类方法。
  • 父类引用子类对象无法调用子类特有的方法。

如果要调用子类特有的方法。要使用向下转型:
〈子类型〉〈变量名〉=(子类型)〈父类型的引用变量〉

  1. 向上转型,自动类型转换。
  2. 向下转型,强制类型转换。
来源:https://www.icode9.com/content-4-868351.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Java面向对象详解
javaSE
java里的继承和封装
深入理解java的构造器
Java中super的几种用法并与this的区别
JAVA面对对象(三)——Super、static、final关键字
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服