//向上转型//如果声明为Ostrich ostrich1 =new Ostrich();结果会怎么样呢? //为什么? 去掉的话,输出结果为“I can't fly!”,方法调用首先是在自己这个类找,找不到再从父类找。 //去掉static是重载还是重写还是遮蔽,不去为什么是遮蔽,遮蔽是什么意思 去掉的话,是遮蔽。 遮蔽就是子类由于命名和父类相同,而导致无法使用父类的变量,但是这些变量是存在于子类中的。 public class A{ int a=1; public static void main(String args[]){ B b = new B(); System.out.println(b.a); } } class B extends A{ int a=0; } 最好能单步调试一下,就能理解什么是遮蔽啊。 重载:子类方法覆盖父类方法(它们的方法签名要相同),子类在调用被重载的方法时,就会调用子类的新方法,除非使用super关键字,才会调用父类方法。
//为什么?
去掉的话,输出结果为“I can't fly!”,方法调用首先是在自己这个类找,找不到再从父类找。
//去掉static是重载还是重写还是遮蔽,不去为什么是遮蔽,遮蔽是什么意思
去掉的话,是遮蔽。
遮蔽就是子类由于命名和父类相同,而导致无法使用父类的变量,但是这些变量是存在于子类中的。
public class A{
int a=1;
public static void main(String args[]){
B b = new B();
System.out.println(b.a);
}
}
class B extends A{
int a=0;
}
最好能单步调试一下,就能理解什么是遮蔽啊。
重载:子类方法覆盖父类方法(它们的方法签名要相同),子类在调用被重载的方法时,就会调用子类的新方法,除非使用super关键字,才会调用父类方法。
ostrich1.fly();等价于Ostrich.fly()
别人不是说了去掉static了吗?
真不知道,大家都是怎么看的