A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 霍明波 中级黑马   /  2012-9-18 15:46  /  1427 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public abstract class WeekDay {
        private WeekDay(){
               
        }
        public static final WeekDay SUN = new WeekDay(){
                @Override
                public WeekDay nextDay() {
                        // TODO Auto-generated method stub
                        return MON;
                }               
        };
        public final static WeekDay MON = new WeekDay(){
                public WeekDay nextDay(){
                        return SUN;
                }
        };
        public abstract WeekDay nextDay();
/*        {
                if(this == SUN){
                        return MON;
                }else{
                        return SUN;
                }
        }*/
}
class WeekDayTest{
        public static void main(String[] args){
                WeekDay weekday = WeekDay.MON;
                System.out.println(weekday.nextDay());
        }
}
为什么我的没有运行结果呢,我跟老师的视频合适了好几遍还是没有问题呀

6 个回复

正序浏览
霍明波 发表于 2012-9-18 18:32
那对于eclipse来说编写在一个类中,它不会自己运行main方法吗?  eclipse中的mian方法要怎么设计啊,我的 ...

你的问题出现在这里
public abstract class WeekDay {
...
class WeekDayTest{
一个java文件中只能有一个public类,而这个类名就是你保存的这个java文件的名字,这就是主类,mian方法就是在这个类中。也就是说main方法所在的类才能用public修饰,一般情况下这个public会省略。你如果按照上面写程序肯定会报错呀,把public去掉再试试。
回复 使用道具 举报
杜佳瑞 发表于 2012-9-18 18:24
当然了,main是所有java程序执行的入口。
当你运行一个程序时,java这个程序的class文件,而这个class文 ...


那对于eclipse来说编写在一个类中,它不会自己运行main方法吗?  eclipse中的mian方法要怎么设计啊,我的这个程序,好像就不执行main方法
回复 使用道具 举报
霍明波 发表于 2012-9-18 17:23
你的代码我写上了,我用的是eclipse,Run As时候出现的不是以前看到的,是Run Configurations,  后来我想 ...

当然了,main是所有java程序执行的入口。
当你运行一个程序时,java这个程序的class文件,而这个class文件的名字是不是就是你保存的这个类名,就需要这个类中有一个程序执行的入口,即main。
回复 使用道具 举报
杜佳瑞 发表于 2012-9-18 16:13
楼主是想说运行结果不是你想要的吧?
System.out.println(weekday.nextDay());中打印的是对象的地址值。next ...

你的代码我写上了,我用的是eclipse,Run As时候出现的不是以前看到的,是Run Configurations,  后来我想了一下会是我的类的main方法放的问题呢  ?  main一定要放在保存的类名的当中吗
回复 使用道具 举报
楼主是想说运行结果不是你想要的吧?
System.out.println(weekday.nextDay());中打印的是对象的地址值。nextDay()这个方法返回值还是WeekDay的对象,所以要想打印出对象所对应名字的字符串必须复写toString()方法。
public String toString(){
            return this==MON? "MON":"SUN" ;
    }
回复 使用道具 举报
代码运行没问题,不知道你怎么搞得
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马