多态和继承复习

与其明天开始,不如现在行动!


多态

多态成立的条件

  1. 存在继承关系或者实现关系
  2. 子类重写父类的方法
  3. 父类引用指向子类对象

细节

通过父类的引用调用子类的对象

Animal animal = new Dog();
  1. animal是向上转型的(隐式转换)

  2. 通过animal调用父类和子类都有的成员变量时,调用的是父类的成员变量

  3. 不能调用子类独有的成员变量,编译时期就会报错

  4. 通过animal调用父类和子类都有的成员方法时,调用的是子类的成员变量

  5. 子类没有重写父类的方法,就会调用父类的方法

  6. 子类引用指向父类对象时向下转型,此时必须强制转换为子类

    School s = new Classes();
    Classes c = (Classes) s;
    
    //不能是以下这种转换,运行会报错
    Classes c = (Classes) new School(); //❌
    

继承

  1. 在子类可以增加域、增加方法或者覆盖超类方法,但是绝对不能删除继承的任何域和方法
  2. 父类没有无参构造并且子类构造没有显式调用父类其它构造,编译器会报错
  3. Java不支持多继承
  4. 一个类声明了final,其它的类就不能继承这个类,其中的方法也会被声明为final,但是变量不会。
  5. 只能在继承层次内进行类型转换
  6. 在将超类转换子类之前,应该使用instanceof进行检查

抽象

  1. 类即使不含有抽象方法,也可以设置为抽象类

  2. 抽象类不能实例化,但是可以引用一个非抽象的子类对象的实例

    // Person抽象,Student继承Person类而且不抽象
    Person p = new Student();
    

修饰符

  1. public—对所有类可见
  2. protected—对本包和所有子类可见
  3. 默认(不需要修饰符)—对本包可见
  4. private—仅本类可见

对象包装

  1. Integer
  2. 对象包装类是不可变的,一旦构造了对象包装类,就不允许更改包装在其中的值
  3. 对象包装器是final的,因此不能定义他们的子类
  4. 如果在一个条件表达式中同时使用Integer和Double,Integer就会自动拆箱提升为Double,再装箱为Double
  5. 装箱和拆箱是编译器执行的,而不是虚拟机

💎总结

本文中若是有出现的错误请在评论区或者私信指出,我再进行改正优化,如果文章对你有所帮助,请给博主一个宝贵的三连,感谢大家😘!!!


  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不爱生姜不吃醋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值