文章目录

  • 一、继承的概念
  • 二、实例
  • 三、重写父类的方法
  • 四、super关键字
  • 4.1 super关键字调用父类的成员变量和成员方法
  • 4.2 super关键字调用父类的构造方法
  • 4.3 super关键字的番外篇


一、继承的概念

在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称为子类,现有的类被称为父类或基类,子类会自动拥有父类所有可继承的属性和方法。
在程序中,如果想要声明一个类继承另一个类,需要使用关键字extends关键字,其基本语法格式如下:

修饰符 class 子类名 extends 父类名
	//程序核心代码

二、实例

//定义Animal类
class Animal {
    String name;    //声明name属性
    //定义动物叫的方法
    void shout() {
        System.out.println("动物发出叫声!");
    }
}

//定义Bird类继承Animal类
class Bird extends Animal {
    //定义一个打印name的方法
    public void printName() {
        System.out.println("name=" + name);
    }
}

//定义测试类
public class Demo01 {
    public static void main(String[] args) {
        Bird bird = new Bird();     //创建一个Bird类的实例对象
        bird.name = "布谷鸟";        //为bird对象的name属性进行赋值
        bird.printName();           //调用bird对象的printName()方法
        bird.shout();               //调用bird类继承Animal父类的方法
    }
}

Java enum继承 java中的继承怎么写_java

Tips:在Java中,类只支持单继承,不允许多继承,也就是说一个类只能有一个父类。

三、重写父类的方法

在继承关系中,子类会自动继承父类中公共的方法,但有时在子类中需要对继承的方法进行一些修改,即对父类方法的重写。在这里需要注意的是,子类中重写的方法需要和父类重写的方法具有相同的方法名参数列表以及返回值类型

//定义Animal类
class Animal01 {
    //定义动物叫的方法
    void shout() {
        System.out.println("动物发出叫声!");
    }
}
//定义Bird继承Animal类
class Birda extends Animal01 {
    //定义鸟叫的方法
    void shout() {
        System.out.println("鸟叫,叽叽喳喳");
    }
}

//定义测试类
public class Demo02 {
    public static void main(String[] args) {
        Birda b = new Birda();
        b.shout();
    }
}

在上面的代码中,Birda类继承了Animal01类。在子类Birda中定义了一个shout()方法对父类的方法进行重写。在调用Birda类对象的shout()方法时,只会调用子类重写的方法,并不会调用父类的shout()方法。

四、super关键字

4.1 super关键字调用父类的成员变量和成员方法

在以上的代码中,可以看出,继承后的类调用子类重写父类的方法中,不会调用父类的shout()方法。因此,Java提供了一个super的关键字,来访问父类的成员,例如访问父类的成员变量、成员方法和构造方法。
使用super关键字调用父类的成员变量和成员方法,具体格式如下:

super.成员变量
super.成员方法(参数a,参数b,...)

实际案例:

//定义Animal类
class Animal {
    String name = "动物";    //声明name属性
    //定义动物叫的方法
    void shout() {
        System.out.println("动物发出叫声!");
    }
}

//定义Bird类继承Animal类
class Bird extends Animal {
    String name = "鸟类";
    //重写父类的shout()方法
    void shout() {
        super.shout();      //访问父类的成员方法
    }

    //定义一个打印name的方法
    public void printName() {
        System.out.println("name=" + super.name);       //访问父类的成员变量
    }
}

//定义测试类
public class Demo01 {
    public static void main(String[] args) {
        Bird bird = new Bird();     //创建一个Bird类的实例对象
        bird.name = "布谷鸟";        //为bird对象的name属性进行赋值
        bird.shout();               //调用bird对象重写的Animal父类的shout()方法
        bird.printName();           //调用bird对象的printName()方法
    }
}

Bird类继承了Animal类,重写了Animal类的shout()方法,并重新定义了子类的name属性。在子类的Bird的shout()方法中使用了super.shout(),调用了父类被重写的方法,在printName()方法中使用了super.name访问父类的成员变量。

4.2 super关键字调用父类的构造方法

使用super关键字调用父类的构造方法,格式如下:

super (参数a,参数b,...)

super关键字的实例代码:

//定义Animal类
class Animal {
    //定义Animal有参的构造方法
    public Animal(String name) {
        System.out.println("我是一只" + name);
    }
}
//定义Bird类继承Animal类
class Bird extends Animal {
    public Bird() {
        super("小小鸟");
    }
}

//定义测试类
public class Demo01 {
    public static void main(String[] args) {
        Bird bird = new Bird();     //创建一个Bird类的实例对象
    }
}

Java enum继承 java中的继承怎么写_Java enum继承_02

4.3 super关键字的番外篇

在以上的代码中,通过super关键字调用构造方法的代码必须位于子类构造方法的第一行,并且只能出现一次,否则就会出现报错。

//定义Animal类
class Animal {
    //定义Animal无参的构造方法
    public Animal() {
        System.out.println("我是一只飞不高的小小鸟");
    }
    //定义Animal有参的构造方法
    public Animal(String name) {
        System.out.println("我是一只" + name);
    }
}
//定义Bird类继承Animal类
class Bird extends Animal {
    //定义无参的构造方法
    public Bird() {
    }
}

//定义测试类
public class Demo01 {
    public static void main(String[] args) {
        Bird bird = new Bird();     //创建一个Bird类的实例对象
    }
}

Java enum继承 java中的继承怎么写_子类_03