4.关于继承extends

extends

某个类不能被继承,最常见的有两种情况

  1. 该类被final修饰,final表示最终的,不能被继承,其中String类就是被final修饰的类

  2. 该类的构造方法为私有构造 即被private 修饰,声明private就不允许本类之外的任何类使用,当然也就不能实例化,最常见使用在工具类中,工具类不需要实例,再去使用引用调用方法,只需要把方法定义为static,这样就能使用类直接去调用方法即可。

第一种情况是很容易理解的:final修饰

第二章情况说一下我个人的理解

私有构造的类如果可以被继承,那就和多态矛盾了,父类引用指向其子类对象(多态)

引用调用方法,实际上是先调用了构造方法,而私有构造是无法创建对象的,故矛盾
举例:

public class Test {
    
    
    // 私有构造
    private Test() {
    
    }
    public static void eat() {
    
      // 这里的方法需要使用static修饰,不然是无法直接使用类调用的
        System.out.println("一直吃");
    }
}
public class Test1 extends Test{
    
     // 此时会报错:There is no default constructor available in 'com.huawei.bes.Test'
    public void eat() {
    
    
        Test.eat();
    }
}
---

<font color=#FF0000>彩蛋</font>(针对使用idea的时候,提示内容无法复制--多次想复制悬浮提示,ctrl+c不好使,于是百度后特意记录下)

鼠标移动到错误位置,Idea会提示错误信息。接着`一直按键盘上的ALT键`,并将鼠移动到错误提示信息上`同时点击一下`,这些信息便被复制了,使用ctrl+v粘贴即可

猜你喜欢

转载自blog.csdn.net/qq_42743223/article/details/109004931