JAVA面向对象之——继承与重写;入门级讲解进来就能看懂

写在前面的话

继承是Java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。是很重要的一个知识点。

重写指的是方法的重写,发生在类的继承中。



继承

继承就是子类继承父类的特征和行为,使得子类具有父类的方法和属性。

除了继承,子类还能创建自己的属性和方法。

格式

class 父类{
    
    
}

class 子类 extends 父类{
    
    
}

继承限制

只有单继承、多重继承、无多继承。

多重继承:A继承B,C又继承A。以此类推。

无多继承:A不能同时继承B和C等多个类。

子类对象的实例化过程

创建对象时:student s = new student();

s保存对象地址存储在栈中,而student()存储在堆中。但在堆中开辟空间创建student()时,是先检查有没有包含父类再创建空间。如果有父类,就先创建父类这个对象,等全部创建完毕后再开辟空间创建student()。与此同时student()里面自动加了一个关键字super(),指向父类的起始地址。

如果父类和子类有属性和方法重复,那会优先加载子类中的。

加入给属性赋值,路径就是先在父类中赋值,再通过super加载给子类。

所以继承的实质,就是子类拥有了父类的地址。

继承了就能拥有父类的所有东西吗?

现在得提到权限修饰符,只有public和protected修饰的,子类才能拥有。

但一般中属性会与自己的get和set方法,即使private了,子类也能通过这些方法调用。


super关键字

super可以做什么?

通过super,可以访问父类构造方法、属性、方法。

子类super()一般是默认访问父类无参构造方法,如果父类没有无参构造方法就会报错。不过可以指定构造方法。

注意的是:调用super构造方法的代码,必须写在子类构造方法第一行。原理和this调用构造方法是一样的。所以super和this不能同时使用,因为总有一个不在第一行。

可以把super看成父类对象的起始地址,一切对super的操作就是对父类里面方法和属性的操作,所以要注意父类中方法和属性的权限修饰符。

父类中private int a; 在子类中super.a 就会报错。


重写

指的是方法的重写,子类的方法和父类方法重复,那么此时就称之为重写,此时生效的为子类的方法;

重写规则

1,参数列表必须与重写方法相同;

2,返回类型必须相同;

3,访问权限不能比父类方法低;

4,父类方法只能被它子类重写;

5,声明为static和private的方法不能被重写;

static跟对象没有关系,它存储在方法区中本身不需要继承。

private修饰的方法权限太低,没法被继承。


重写Override与重载Overload的区别

  1. 发生位置不同
    重载:一个类中
    重写:子父类中
  2. 参数列表限制
    重载:必须不同
    重写:必须相同
  3. 返回值类型
    重载:与访问权限无关
    重写:返回值类型必须一致
  4. 访问权限
    重载:与访问权限无关
    重写:子的权限不能小于父的权限
  5. 异常处理
    重载:与异常无关
    重写:异常范围可以更小,但不能抛出新的异常

おすすめ

転載: blog.csdn.net/m0_58702068/article/details/120503356