Java继承

一、Java继承详解

Java继承
目录:
1.为什么要”继承“?
2.继承的类型
2.1 单继承
2.2 多重继承
2.3 多个子类继承一个基类
2.4 Java没有多继承
3.继承的特性
4.继承关键字✨
4.1 extends-继承类
4.2 implements-继承接口,可以变相实行多继承
4.3 super-父类(直接看成类名)
4.4 this-当前类
4.5 final
4.5.1 final修饰类-不继承
注:final修饰的类中,成员方法默认为final,成员变量不是默认为final
4.5.2 final修饰成员方法-只继承不能重写
4.5.3 final修饰成员变量-常量
4.6 构造器
4.6.1 无参构造器-默认调用父类的无参构造器
4.6.2 有参构造器-用super关键字调用父类的有参构造器

二、要注意的点

1.构造器
(1)子类的构造器中调用父类的构造方法必须放在第一行,否则会报错
(2)子类的构造器如果没有调用父类的有参构造方法,就会在第一行默认调用父类的无参构造方法,但子类的构造器如果调用了父类的有参构造方法,则不会默认调用父类的无参构造方法
(3)子类的构造器中调用父类的有参构造器要用super关键字
(4) 父类如果含有有参构造方法,最好显示写出无参构造方法,因为子类可能会默认调用父类的无参构造方法,如果不显示写出无参构造方法,则会报错
代码来源

//基类的无参构造器和有参构造器
class SuperClass
{
    private int n;
    //无参构造器
    SuperClass()
    {
        System.out.println("SuperClass()");
    }
    //有参构造器
    SuperClass(int n)
    {
        System.out.println("SuperClass(int n)");
        //this.n指向的是变量n,n指向的是参数n
        this.n = n;
    }
}
class SubClass extends SuperClass
{
    private int n;
    SubClass()
    {
        //调用父类有参构造器,则不会自动调用父类的无参构造器
        super(300);
        System.out.println("SubClass");
        System.out.println("————————————————");
        
    }
    public SubClass(int n)
    {
        //第一行默认调用父类无参构造器
        //Super()
        System.out.println("SubClass(int n):"+n);
        this.n = n;
    }
}
public class InitializerTest {

    public static void main(String[] args) {
        SubClass sc = new SubClass();
        SubClass sc2 = new SubClass(200);
    }

}

输出结果为:
SuperClass(int n)
SubClass
————————————————
//默认调用父类的无参构造器
SuperClass()
SubClass(int n):200

搞笑一刻

来自@FS

面向对象编程中常见概念深入理解.png

你可能感兴趣的:(Java继承)