java——三大特性之继承
1、继承的含义及做用
在写java代码的时候,经常会出现一些相同或者相似的类,里面有着差很少的属性和方法。为了不代码冗余,因而咱们将这些差很少的类进行了一个操做——继承。java
如上图,ide
哺乳动物 和 卵生动物 继承了 动物类(父类),能够得到父类全部的属性和方法(私有属性和构造方法除外);this
猫类 和 人类 在继承了哺乳动物后,不只得到了父类里的属性和方法,还额外自主的添加了新的属性和方法(子类本身的属性和方法,不关父类的事);spa
鸟类 和 蛇类 在继承了卵生动物后,能够重写父类的方法(方法名,修饰符,返回值都相同,只有方法体不同);blog
当咱们实例化卵生动物(子类)时,动物类(父类)先进行实例化,子类实例化时先实例化其父类,而后实例化子类。(想要使用子类,父类必须先被建立)继承
2、super 与 this
因为 子类 不能继承父类中的 构造方法 和私有属性,而咱们又想进行使用时。get
super. 可使用到父类的普通方法,想获取父类的私有属性,则使用父类的get方法(注意是super丶不要忘记了小数点)class
this. 指向本类的引用,调用本类的方法和属性权限
super()引用
- 调用父类的构造器
- super只能出如今构造器中,而且只能为第一行
- 父类有多个构造器时,super()括号中传入的实参,决定了调取父类中的哪一个构造器
- 子类构造器会默认添加super(),调取父类无参的构造器。因此,当父类没有空构造器时,程序将会报错。
this()
- 调用本类的构造器
- 只能写在构造器中,而且只能为第一行
注意:this() 和 super() 不能出如今同一个构造器中
3、方法的重写(覆盖)
当 子类 继承 父类后,每每子类的 方法 更加的清晰,因此咱们将更改 父类 的方法,将 父类 继承下来的方法 更加具体的实现;
重写父类方法的规则
- 相同的方法名
- 相同的参数列表(参数数量、参数类型、参数顺序都要相同)
- 相同的返回值类型
- 子类覆盖方法的访问权限要不小于父类中被覆盖方法的访问权限(public > protected > default > private)
在重写方法上,可使用 @Override 注解来标明是重写方法。固然也能够省略,但为了代码可读性,建议保留。
@Override 能够验证是不是父类的方法。若是不是,将会报错