多重继承中,孙子类可以继承爷爷类的属性和方法吗?

可以。
·Java支持单根继承,一个子类只能由一个直接父类;可以有多个间接父类(除直接父类外的父类都叫间接父类,比如爷爷类),它们都叫做子类的父类。只要是父类的非私有属性和方法,非构造方法,都可以被子类继承。
·孙子类可以直接继承爷爷类的除private外的属性和方法;
·孙子类可以直接使用super调用爷爷类的属性和方法;
看如下代码:
爷爷类:Animal

package com.Animal;

public class Animal {
    private String color;
    private String feetNum;

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public String getFeetNum() {
        return feetNum;
    }

    public void setFeetNum(String feetNum) {
        this.feetNum = feetNum;
    }

    public Animal() {
        System.out.println("执行Animal的无参构造");
    }
    public void eat(){
        System.out.println("动物都可以吃饭");
    }
    public void show(){
        System.out.println("有些动物的毛色是"+color+",有"+feetNum+"只脚。");
    }
}

父类:Pet

package com.Animal;

public class Pet extends Animal {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Pet(String name) {
        this.name = name;
    }

    public Pet() {
        System.out.println("执行Pet的无参构造");
    }
}

子类:Dog类

package com.Animal;

public class Dog extends Pet {
    private String bark;

    public String getBark() {
        return bark;
    }

    public void setBark(String bark) {
        this.bark = bark;
    }

    public Dog() {
        System.out.println("执行Dog的无参构造函数");
    }
}

测试类:

package com.Animal;

public class Test {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.eat();
        dog.setColor("黄色");
        dog.setFeetNum("4");
        dog.show();
    }
}

输出结果:
多重继承中,孙子类可以继承爷爷类的属性和方法吗?_第1张图片
理解:
狗是宠物的一种,宠物是动物的一种,狗当然也属于动物。动物拥有的属性和特征狗肯定拥有。所以动物类的公有属性方法可以被狗类继承。

你可能感兴趣的:(Java从入坑到变疯,java)