![e3a5ca59f9576d5bbc14c9969d334be9.png](https://i-blog.csdnimg.cn/blog_migrate/626d702909654b0c4468e7f31580dfcf.jpeg)
关注我,每天三分钟,轻松掌握一个Java知识点。
我们都知道,Java是面向对象的语言,再很多地方,Java实际上是在模仿现实。比如现实生活中我们把鸟分为蜂鸟、鹰、麻雀等品种,但归根结底他们都是鸟,而在往上总结,鸟和鱼都是动物,在往上,动物和植物都是“物”。
这种可以一直往上最根溯源的形式,映射到JAVA语言中,就是子类和父类的模型。麻雀的父类是鸟,鸟的父类是动物,动物的父类是“物”(object)。父类是更宽泛的概念,而子类是父类的特殊情况。
正如之前我们聊接口和抽象类说的那样,父类也有归纳一类事物共性的功能,比如说鸟有飞这个功能。在我们想要一直鸟时,我们可以直接new一个鸟类,但有时后我们想更个性化一点,这个时候只要extends鸟类,自己加入一些特性就可以得到一个新的鸟类的子类了,而且在这个子类中,我们能写一些子类独有的属性和方法。
有时候我们想要鸟类的99%的功能,但唯独那1%不符合我们的要求,这个时候再建立一个跟鸟类平行的类就太浪费了。比如说我们想要鸵鸟,鸵鸟其他属性都符合鸟类,就是不会飞,这个时候涉及到Java中一个非常重要的点,重写。
正是有了重写,子类能更好的拓展父类,但有一定的约定条件,江湖人称“两同两小一大”,“两同”说的是方法名要一样,形参要一样;“两小”指的是子类方法的返回值要小于等于父类方法的返回值,子类方法抛出的异常要小于等于父类方法抛出的异常;“一大”指子类方法的访问权限要大于等于父类权限,这就是重写要注意的地方。这里涉及到this和super的用法,我们以后详细的说。这里免费赠送一张权限图,帮助大家理解。
![8584555ec07bf9e5470bd62a34252bc6.png](https://i-blog.csdnimg.cn/blog_migrate/bd5152ccd2e86b2d2a1c4ea219afe27c.jpeg)
值得注意的是,子类不会继承父类的构造器,但你可以在子类构造器里调用父类构造器的代码。
![423fbb22dfc2022d6573ff89900ce28a.png](https://i-blog.csdnimg.cn/blog_migrate/1b9301b3f988974632ff40859bfcaa8f.jpeg)
以上就是今天分享的全部内容了,创作不易,希望大家多多关注,收藏,评论每条都看了,以后会提高自己的姿势水平,尽量把知识讲的透特且生动且有趣!