abstract class Animal {
private String name;
Animal(String name) {this.name = name;}
public void enjoy(){
System.out.println("叫声......");
}
public abstract void enjoy();
}abstract class Cat extends Animal {
private String eyesColor;
Cat(String n,String c) {
super(n);
eyesColor = c;}
public void enjoy() {
System.out.println("猫叫声......");
}
public abstract void enjoy();
}class Lady {
private String name;
private Animal pet;
Lady(String name,Animal pet) {
this.name = name;
this.pet = pet;
}
public void myPetEnjoy(){
pet.enjoy(); //传递的是Cat型的c,但这个pet不是Animal类型的吗?又没有强制转换为什么输入的是"猫叫声"呢,而不是"叫声"呢,父类引用不是不可以访问子类的变量和方法吗?
}
}public class Test {
public static void main(String args[]){
Cat c = new Cat("catname","blue");
Lady l1 = new Lady("l1",c);
l1.myPetEnjoy();
}
}
private String name;
Animal(String name) {this.name = name;}
public void enjoy(){
System.out.println("叫声......");
}
public abstract void enjoy();
}abstract class Cat extends Animal {
private String eyesColor;
Cat(String n,String c) {
super(n);
eyesColor = c;}
public void enjoy() {
System.out.println("猫叫声......");
}
public abstract void enjoy();
}class Lady {
private String name;
private Animal pet;
Lady(String name,Animal pet) {
this.name = name;
this.pet = pet;
}
public void myPetEnjoy(){
pet.enjoy(); //传递的是Cat型的c,但这个pet不是Animal类型的吗?又没有强制转换为什么输入的是"猫叫声"呢,而不是"叫声"呢,父类引用不是不可以访问子类的变量和方法吗?
}
}public class Test {
public static void main(String args[]){
Cat c = new Cat("catname","blue");
Lady l1 = new Lady("l1",c);
l1.myPetEnjoy();
}
}
首先:怎么可能Cat 和 Animal都是抽象类?
然后下面又对抽象类进行初始化,
你在编译器下面如果可以RUN到这个结果我就真的是无语了:(