当前位置:   article > 正文

Java基础之extends-继承(以及this/super,重写的特性)_java extends 方法名不一样 怎么继承

java extends 方法名不一样 怎么继承

Java中提供了一个关键字extends,用这个关键字,我们可以让一个类和另一个类建立起继承关系

public class Student extends Person{}

Student在这称为子类,Person在这称为父类

使用继承的好处 / 优势:

可以把多个子类中重复的代码提取到父类中,提高了代码的复用性

子类可以得到父类的属性和行为,子类可以使用

子类可以在父类的基础上,增加了其他的功能,使子类更强大

继承的特点:

1.Java只支持单继承,不支持多继承,但是可以多层继承

单继承: 一个子类只能继承一个父类

不支持多继承: 子类不能同时继承多个父类

多层继承: 子类A继承父类B,父类B可以继承父类C

儿子->父亲->爷爷->???(Object)

儿子与爷爷属于 间接继承的关系, 也就是 儿子可以使用爷爷的内容

在Java底层中,在最顶层的父类设立了一个虚方法表,在这个虚方法表里面存放了经常被调用的方法(存放在虚方法表中的虚方法需要满足三个条件:非private,非static,非final)

  1. public class Test {
  2. public static void main(String[] args) {
  3. A a = new A();
  4. a.方法c();

例如:

A->B->C 在这个继承关系中 C的虚方法表被B继承,B的虚方法表被A继承,如果A去使用C的虚方法,并不是一层一层往上找(从性能的角度来说,这样的效率太低),而是在A已经继承的虚方法表中去找,但是如果C的方法并不是虚方法,那A去调用C的方法,那就是一层一层往上找

2.Object: Java中每一个类都直接或者间接继承与Object

3.子类只能访问父类中非私有的成员

总结: 1.Java只能单继承,Java不支持多继承,但是支持多层继承

         2.Java中所有的类都直接或者间接继承于Object

         3.子类只能访问父类中非私有的成员

什么时候使用继承?

当类与类之间,存在相同或者共性的内容的时候,并且满足子类是父类中的一种,就可以考虑去使用继承来优化代码(公共部分放在父类),减少代码的冗余,提高代码复用性.

子类到底能继承父类中的那些内容?         继承 != 子类能调用

构造方法: 不能被子类继承,但是能通过super去调用
成员变量: public能被子类继承且能调用,private能被子类继承,但是不能被子类去调用
成员方法:    public能(虚方法)       private不能

this, super 是什么?

this 可以理解是一个变量,表示当前方法调用者的地址值

super 代表父类存储空间

继承中体系中:成员变量/方法 访问特点:

this调用 就近原则

super调用 直接找父类

先在局部位置找,本类成员位置找,父类成员位置找,逐级往上

如果出现了重名的成员变量怎么办?

  1. System.out.println(name); //从局部位置开始往上找
  2. System.out.println(this.name); //从本类成员位置开始往上找
  3. System.out.println(super.name); //从父类成员位置开始往上找

直接调用满足就近原则: 谁理我近 就调用谁

继承中体系中:构造方法的访问特点

父类中的构造方法不会被子类继承,但是能通过super调用

子类的所有构造方法默认先访问父类的无参构造,再执行自己

(因为子类在初始化的时候,有可能会使用父类的数据,如果父类没有初始化,子类就没办法使用父类的数据,也就是子类初始化之前,就一定会调用父类的构造方法去完成父类数据空间的初始化)

子类构造的第一行,有一个默认的super();

如果想要访问父类有参构造,必须自己手写

重写

继承体系中,子类出现了和父类一模一样的方法声明,我们就称子类这个方法是重写的方法.

方法的重写:

当父类的方法不满足子类现在的需求时,需要进行方法的重写

@Override重写注解

1.@Override是放在重写后的方法上,我们可以用这个注解去校验子类重写时语法是否正确

2.加上这个注解之后,如果有红色波浪线,表示语法是错误的

3.建议在重写的方法写上这个注解(可读性更高)

方法重写的本质就是覆盖了继承类中虚方法表的方法

方法重写注意事项和要求

1.重写方法的名称,形参列表必须和父类一致(错一个字都不行)

2.子类重写父类方法时,访问权限子类必须大于父类 (空着不写 < protected < public)

3.子类重写父类方法时,返回值类型子类必须小于等于父类

4.对于2和3理解可能有些困难的话,有个小建议就是,重写的时候方法和父类保持一致就可以了

5.只有被添加到虚方法表中的方法才能被重写(虚方法原则:非private 非static 非final)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/78764
推荐阅读
相关标签
  

闽ICP备14008679号