黑马程序员技术交流社区
标题:
求每一步的注释!3q!
[打印本页]
作者:
十甫寸
时间:
2013-8-15 16:43
标题:
求每一步的注释!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()的上面?
作者:
会飞的狼
时间:
2013-8-15 16:52
public class Mon //类名
{
public static void main(String[] args)//主类
{
System.out.println("英文格式:"+Week.Mon);
System.out.println("中文格式:"+Week.Mon.toLocaleString());
}
public enum Week //定义一个名为week的枚举
{
/*枚举内部的成员mon,它是一个week的对象,全称:
public static final Week Mon = new Week(){
public String toLocaleString()
{
return "星期一";
}
};*/
Mon()
{
public String toLocaleString()//这个是覆盖父类week中的接口toLocaleString()
{
return "星期一";
}
};
public abstract String toLocaleString();//这个是接口,在枚举中常量成员要放在最前面
}
}
作者:
masterV
时间:
2013-8-15 16:57
本帖最后由 魏先勇 于 2013-8-15 16:59 编辑
public class Mon
{
public static void main(String[] args)
{
System.out.println("英文格式:" + Week.Mon);// Week.Mon打印时默认调用Enum类中的toString方法,打印出Mon
System.out.println("中文格式:" + Week.Mon.toLocaleString());// 调用Mon中的toLocaleString()方法,打印返回的“星期一”。
}
public enum Week// 定义一个枚举类
{
Mon()// 枚举类中只有一个实例:Mon
{
public String toLocaleString()// Mon重写了Week中的抽象方法toLocaleString();
{
return "星期一";
}
};
public abstract String toLocaleString();// 这个是枚举类Week中的抽象方法,当然不能写到实例Mon()中。
}
}
复制代码
枚举类的知识在张老师的Java基础加强中有讲到,如果楼主对这块儿不熟悉的话可以看视频复习一下。
作者:
sunriselzz
时间:
2013-8-15 17:55
引用张老师视频教程的讲解:
一. 知识概念概述: 通过enum定义枚举类,在其中列出所有同类的元素常量值作为子类的实例对象使用。
(1) 枚举类是一个特殊的类,每个元素都是该类的一个实例对象。
用枚举类规定值,如上面的Week。以后用此类型定义的值只能是这个类中规定好的那些值,
若不是这些值,编译器不会通过。好处:在编译时期就会发现错误,表明值不符合,减少了运行时期可能发生的错误。
如果想在一个类中编写完每个枚举类和测试调用类,那么可将枚举类定义成调用类的内部类。
枚举类是一个class,而且是一个不可被继承的final类,其中的元素都是类实例的静态常量。
(2) 构造器:构造器只是在构造枚举值的时候被调用。
构造器只有私有private,绝不允许有public构造器。这样可以保证外部代码无法重新构造枚举类的实例,
这样是合情合理的,因为枚举值是public static final的常量,但是枚举类的方法和数据域是可以被外部访问的。
构造器可以有多个,调用哪个即初始化相应的值。
(3) 所有的枚举类都继承了Enum方法,方法如下:
1) toString() ---> 返回枚举量的名称
2) ordina() ---> 返回枚举值在枚举类中的顺序,按定义的顺序排
3) getClass() ---> 获取对应的类名
静态方法:
1) valueOf(String e) ---> 转为类中对应的对象,即将字符串转为对象
2) values() ---> 获取数组,将元素放入一个数组中。
(4) 注意:
1、元素列表即所有的元素项目,必须放在整个类的最前面。
2、元素列表后要有分号
3、枚举类中的方法为private
4、在元素后跟上(),就可指定要使用的构造方法,含参数。
5、枚举类中的每个元素都是它的一个子类对象,当枚举类中存在abstract方法,须在子类后加{},
并在其中实现此方法。
二. 代码注释:
package cn.java.test;
//定义一个类Mon
public class Mon
{ //主函数入口
public static void main(String[] args)
{ //枚举实例值是public static final的常量,可以通过枚举类名直接引用
System.out.println("英文格式:"+Week.Mon);
System.out.println("中文格式:"+Week.Mon.toLocaleString());
}
public enum Week
{ // 枚举列表成员MON必需在首句
Mon()
{ //实现枚举类中的抽象方法toLocaleString()
public String toLocaleString()
{ //返回值类型为String
return "星期一";
}
};
//当枚举类中存在abstract方法时,须在子类MON后加{},并在其中实现此方法。
public abstract String toLocaleString();
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2