У меня есть основная идея: у нас есть класс, который имеет атрибут и метод; однако я смущен тем, как это работает. Например. c2.chat(c3);
У меня есть корова, равная теленку, и вызов функции chat() на теленка. Почему мы используем функцию chat() в классе Calf против функции chat() в классе Cow? Что такое поле c2 в этом вызове?Понимание атрибутов и методов в Java
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
Каков ваш вопрос в конце концов? –
Вы используете метод 'chat()' в классе 'Calf', если он имеет свою уникальную функциональность. 'c2' - это копия' c3', и это компилируется из-за наследования. –
@ sᴜʀᴇsʜᴀᴛᴛᴀ См. Последние две строки текстового блока. – Peter