我有一个基本的想法,我们有一个具有属性和方法的类;但是,我对它的具体工作方式感到困惑。例如。 c2.chat(c3);
我有一匹牛等于小牛,并在小牛身上调用chat()函数。为什么我们使用Calf类中的chat()函数与Cow类中的chat()函数?这次通话中的c2字段是做什么的?
class Cow{
String say = "C";
String speak(){
return say;
}
void chat(Cow c1){
System.out.println("A " + this.speak() + " B " + c1.speak());
}
}
class Calf extends Cow{
Calf(){ say = "H";}
void chat(Cow c1){
System.out.println("F " + this.speak() + " G " + c1.speak());
}
}
class Main{
public static void main(String[] args){
Cow c1 = new Cow();
Calf c3 = new Calf();
Cow c2 = c3;
c1.chat(c2);
c2.chat(c3);
c3.chat(c2);
c1.chat(c3);
c3.chat(c1);
}
}
输出:
A C B H
F H G H
F H G H
A C B H
F H G C
答案 0 :(得分:0)
由于您正在使用现有方法进行牛类,而小牛来自牛,因此聊天方法与牛相比,基于小牛的属性而有所不同。因此,speak方法可以在两个类中使用。虽然他们都是基于他们可以说话的事实,但只是以不同的方式。另一个值得注意的区别是“说”变量的定义不同于小牛与牛。
c2字段将Calf类实例化为一个新对象,即牛。如果我理解正确,这将是多态性的利用。