Java之枚举
package com.anby;
public class mode {
public enum student{
man,woman;
}
public enum student1{
man("男"),woman("女");
//枚举中不能直接定义成员,必须要首先定义枚举常量才能生命枚举中的成员
//也就是说,枚举相当于多例模式,只是简化了书写
//枚举常量 默认 被static finaly修饰
private String value;
private student1(String str)
{
this.value=str;
}
}
/**
* @param args
*/
public static void main(String[] args) {
Person man=Person.man;
Person woman=Person.woman;
Person woman2=Person.woman;
System.out.println(man);
System.out.println(woman);
System.out.println(woman2); //此时打印的woman=woman2
//这里有点绕。。
//调用的是子类的方法
System.out.println(man.getAge());
System.out.println(woman.getAge());
}
}
abstract class Person
{
//私有化构造函数,通过内部成员进行初始化--传男 初始化男人,传女 初始化女人
//此时,对男女的年龄进行设置(通过内部类),在本类中提供一个抽象方法,用于外部访问该属性
//通过内部类,对年龄进行设置,外层类的抽象方法只是为了让本类型的实例进行访问
public static Person man=new Person("男"){ //这里也说明了,抽象类的内部类,可以对外部抽象类调用构造函数
public int getAge()
{
return 20;
}
};
public static Person woman=new Person("女"){
public int getAge()
{
return 22;
}
};
private String value;
private Person(String value)
{
this.value=value;
}
public abstract int getAge(); //该抽象方法只是为了让实例调用该内部类中实现的方法
}