java-继承
Posted whc0305
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java-继承相关的知识,希望对你有一定的参考价值。
java——三大特性之继承
一、继承的含义及作用
在写java代码的时候,常常会出现一些相同或者类似的类,里面有着差不多的属性和方法。为了避免代码冗余,于是我们将这些差不多的类进行了一个操作——继承。
如上图,
哺乳动物 和 卵生动物 继承了 动物类(父类),可以获得父类所有的属性和方法(私有属性和构造方法除外);
猫类 和 人类 在继承了哺乳动物后,不仅获得了父类里的属性和方法,还额外自主的添加了新的属性和方法(子类自己的属性和方法,不关父类的事);
鸟类 和 蛇类 在继承了卵生动物后,可以重写父类的方法(方法名,修饰符,返回值都相同,只有方法体不一样);
当我们实例化卵生动物(子类)时,动物类(父类)先进行实例化,子类实例化时先实例化其父类,然后实例化子类。(想要使用子类,父类必须先被创建)
二、super 与 this
由于 子类 不能继承父类中的 构造方法 和私有属性,而我们又想进行使用时。
super. 可以使用到父类的普通方法,想获取父类的私有属性,则使用父类的get方法(注意是super丶不要忘记了小数点)
this. 指向本类的引用,调用本类的方法和属性
super()
- 调用父类的构造器
- super只能出现在构造器中,并且只能为第一行
- 父类有多个构造器时,super()括号中传入的实参,决定了调取父类中的哪个构造器
- 子类构造器会默认添加super(),调取父类无参的构造器。所以,当父类没有空构造器时,程序将会报错。
this()
- 调用本类的构造器
- 只能写在构造器中,并且只能为第一行
注意:this() 和 super() 不能出现在同一个构造器中
三、方法的重写(覆盖)
当 子类 继承 父类后,往往子类的 方法 更加的清晰,所以我们将更改 父类 的方法,将 父类 继承下来的方法 更加具体的实现;
重写父类方法的规则
- 相同的方法名
- 相同的参数列表(参数数量、参数类型、参数顺序都要相同)
- 相同的返回值类型
- 子类覆盖方法的访问权限要不小于父类中被覆盖方法的访问权限(public > protected > default > private)
在重写方法上,可以使用 @Override 注解来标明是重写方法。当然也可以省略,但为了代码可读性,建议保留。
@Override 可以验证是否是父类的方法。如果不是,将会报错
以上是关于java-继承的主要内容,如果未能解决你的问题,请参考以下文章