问个向上转型的问题,为啥第一段程序可以运行,第二段却不行?
import static mytools.Print.*;//upcasting
class Cycle{
public static void ride(Cycle i){
print("Ride Cycle");
}
}
class Unicycle extends Cycle{
public static void main(String[] args){
Unicycle a=new Unicycle();
ride(a);
}
}
import static mytools.Print.*;//upcasting
class Cycle{
public static void ride(Cycle i){
print("Ride Cycle");
}
}
class Unicycle extends Cycle{
}class CycleTest{
public static void main(String[] args){
Unicycle a=new Unicycle();
ride(a);
}
}
import static mytools.Print.*;//upcasting
class Cycle{
public static void ride(Cycle i){
print("Ride Cycle");
}
}
class Unicycle extends Cycle{
public static void main(String[] args){
Unicycle a=new Unicycle();
ride(a);
}
}
import static mytools.Print.*;//upcasting
class Cycle{
public static void ride(Cycle i){
print("Ride Cycle");
}
}
class Unicycle extends Cycle{
}class CycleTest{
public static void main(String[] args){
Unicycle a=new Unicycle();
ride(a);
}
}
CycleTest没有ride方法
你的第一段程序可以运行是因为Unicycle继承了ride方法,你调用的是Unicycle自己的ride方法第二段用不了是
class CycleTest{
public static void main(String[] args){
Unicycle a=new Unicycle();
ride(a);
}
}
这个类里面没有定义ride方法,你要改成
class CycleTest{
public static void main(String[] args){
Unicycle a=new Unicycle();
Unicycle.ride(a);//或者是Cycle.ride(a)
}
}
这样就可以运行了
第一段代码因为你在Unicycle 继承了Cycle,当然能调用ride方法