您的位置:程序门 -> java -> j2se / 基础类



问个向上转型的问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


问个向上转型的问题
发表于:2008-01-18 10:14:43 楼主
问个向上转型的问题,为啥第一段程序可以运行,第二段却不行?
java code
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); } }

java code
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); } }
发表于:2008-01-18 10:28:491楼 得分:0
unicycle   继承了ride方法,所以可以调用
cycletest没有ride方法
发表于:2008-01-18 10:35:412楼 得分:0
明白了。。
发表于:2008-01-18 10:37:213楼 得分:0
你调用静态方法的写法有点问题,静态方法应该是类名.方法名,你的写法是调用本类中的方法


你的第一段程序可以运行是因为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)
        }
}
这样就可以运行了
发表于:2008-01-18 10:37:224楼 得分:0
cycletest类中没有ride这个方法,编译都不能通过吧
第一段代码因为你在unicycle   继承了cycle,当然能调用ride方法
发表于:2008-01-18 16:23:035楼 得分:0
楼上们的解释的都对
发表于:2008-01-18 16:43:466楼 得分:0
继承,多态多深入理解就不会对这些小问题烦恼了!


快速检索

最新资讯
热门点击