黑马程序员技术交流社区
标题:
求每一步的注释!3q!
[打印本页]
作者:
十甫寸
时间:
2013-8-15 16:41
标题:
求每一步的注释!3q!
public class Mon
{
public static void main(String[] args)
{
System.out.println("英文格式:"+Week.Mon);
System.out.println("中文格式:"+Week.Mon.toLocaleString());
}
public enum Week
{
Mon()
{
public String toLocaleString()
{
return "星期一";
}
};
public abstract String toLocaleString();
}
}
求每一步的注释!3q!
public abstract String toLocaleString(); 这句话的作用是什么,为什么不能放在Mon()的上面?
作者:
lengmianluocha
时间:
2013-8-15 17:10
本帖最后由 lengmianluocha 于 2013-8-15 17:20 编辑
public class Mon
{
public static void main(String[] args)
{
System.out.println("英文格式:"+Week.Mon);//
System.out.println("中文格式:"+Week.Mon.toLocaleString());//调用Mon中的toLocaleString方法。
}
public enum Week
{
Mon()//枚举值。测试,此处的括号可以去除。
{
public String toLocaleString()//实现枚举类中的抽象方法。
{
return "星期一";
}
};
public abstract String toLocaleString();//为枚举定义一个抽象方法,这个抽象方法由枚举值提供实现。
}
}
复制代码
楼主你好,这段代码中,你是将枚举类定义在了Mon类中,枚举类相当于Mon的内部类了。若将public abstract String toLocaleString();放在Mon类中,则Mon类是一个抽象类。此时的代码可以改为:
public abstract class Mon
{
public static void main(String[] args)
{
System.out.println("英文格式:"+Week.Mon);//
System.out.println("中文格式:"+Week.Mon.toLocaleString());
}
public enum Week
{
Mon()//枚举值,测试,此处的括号可以去除。
{
};
public String toLocaleString()
{
return "星期一";
}
}
public abstract String toLocaleString();//
}
复制代码
与程序本意不符了。
此段代码说明了,枚举类中可以定义抽象方法。枚举类中定义抽象方法时,无需显示使用abstract将枚举类定义成抽象类,因为枚举类要显示创建枚举值,所以每个枚举值必须为抽象方法提供实现,否则报错。
作者:
py强子
时间:
2013-8-15 20:56
本帖最后由 py强子 于 2013-8-15 21:02 编辑
public enum Week
{
Mon()
{
public String toLocaleString()
{
return "星期一";
}
};
public abstract String toLocaleString();
}
你这是定义了一个枚举类:
public abstract String toLocaleString();这句话的意思就是;
定义一个抽象方法toLocaleString();如果方法定义成抽象的,那么Mon就不在是枚举类的元素,而是其子类;
必须复写toLocaleString();
而这个方法的功能那,就是你这道题的作用,打印中文星期几;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2