可以。
·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();
}
}
输出结果:
理解:
狗是宠物的一种,宠物是动物的一种,狗当然也属于动物。动物拥有的属性和特征狗肯定拥有。所以动物类的公有属性方法可以被狗类继承。