class Animal{
private int height,weight;
public void eat(){
System.out.println("anuimal eat");
}
public void sleep(){
System.out.println("animal sleep");
}
void breathe(){
System.out.println("animal breathe");
}
// public static void main(String [] args){
//}
}
class Fish extends Animal{
void breath(){
System.out.println("fish bubble");
}
}
class caoxei{
public static void main(String [] args){
Animal an = new Animal();
Fish fh = new Fish();
an.breathe();
fh.breathe();
}
}
运行这估代码 为什么 fh 调用的是 Animal 的breath而孙鑫却说 是fish的breath
我是新手
private int height,weight;
public void eat(){
System.out.println("anuimal eat");
}
public void sleep(){
System.out.println("animal sleep");
}
void breathe(){
System.out.println("animal breathe");
}
// public static void main(String [] args){
//}
}
class Fish extends Animal{
void breath(){
System.out.println("fish bubble");
}
}
class caoxei{
public static void main(String [] args){
Animal an = new Animal();
Fish fh = new Fish();
an.breathe();
fh.breathe();
}
}
运行这估代码 为什么 fh 调用的是 Animal 的breath而孙鑫却说 是fish的breath
我是新手
就算你Animal fh=new Fish(),fh.breate();这时还是调用Fish的breate,因为这时java多态的特性,
在执行时对方法进行了动态绑定
而鱼的实际重写了父类的breath方法。因此调用的就是鱼的breath方法。
这就相当于:A公司把厂房卖给了你,你把它装修了一翻,别人看到的是你装修后的房子,但是他实质是A公司的厂房,而如果别人说A公司的厂房指的也就是你装修过的房子
void breath(){
System.out.println("fish bubble");
}
这个方法一改是 breathe 你少写个“e”
在重写的时候方法一定要copy
而Fish中写的是breath()
方法都不一样~~!