字段
在类中创建当前类的实例对象
class Direction {
private Direction() {
super();
}
public static final Direction FRONT = new Direction();
public static final Direction BEHIND = new Direction();
}
这种方式限制了不允许外部创建对象而是通过调用字段来返回已经创建好的实例对象。
有参形式:
class Direction {
// 字段相当于是创建好了的实例,外部可以直接调用
public static final Direction FRONT = new Direction("前");
public static final Direction BEHIND = new Direction("后");
private String name;
// 私有无参构造让外部无法创建实例
private Direction() {
super();
}
private Direction(String name) {
this.name = name;
}
// 提供一个访问方法来访问字段中的值
public String getString() {
return name;
}
}
public class Test {
public static void main(String[] args) {
String s1 = Direction.BEHIND.getString();
System.out.println(s1);//后
s1 = Direction.FRONT.getString();
System.out.println(s1);//前
}
}
通过抽象类的方式创建 :
abstract class Direction {
private String name;
private Direction() {
super();
}
private Direction(String name) {
this.name = name;
}
// 获取传入参数的值
public String getString() {
return name;
}
// 定义一个抽象的方法
public abstract void show();
public static final Direction FRONT = new Direction("前") {
@Override
public void show() {
System.out.println("前");
}
};
public static final Direction BEHIND = new Direction("后") {
@Override
public void show() {
System.out.println("后");
}
};
}
public class Test {
public static void main(String[] args) {
String s1 = Direction.BEHIND.getString();
System.out.println(s1);// 后
s1 = Direction.FRONT.getString();
System.out.println(s1);// 前
Direction.BEHIND.show();// 后
Direction.FRONT.show();// 前
}
}
枚举
枚举是一种便捷的在类中创建当前类实例的一种方式通过enum
关键字来创建。
但是目前枚举还用的较少。
enum Direction {
//直接列举出字段名即可
FRONT, BEHIND, LEFT, RIGHT;
}
public class Test {
public static void main(String[] args) {
Direction d1 = Direction.FRONT;
//直接打印返回的就是枚举的名字,因为底层中枚举重写了toString()方法。
System.out.println(d1);//FRONT
}
}
有参形式:
enum Direction {
//直接在枚举后面添加传入的参数
FRONT("前"), BEHIND("后"), LEFT("左"), RIGHT("右");
//下面部分和传统方法一样
private String name;
private Direction(String name) {
this.name = name;
}
public String getname() {
return name;
}
}
public class Test {
public static void main(String[] args) {
String d1 = Direction.FRONT.getname();
System.out.println(d1);// 前
d1=Direction.BEHIND.getname();
System.out.println(d1);// 后
}
}
抽象方法:
enum Direction {
FRONT("前") {
@Override
public void show() {
System.out.println("前");
}
},
BEHIND("后") {
@Override
public void show() {
System.out.println("后");
}
};
private String name;
private Direction(String name) {
this.name = name;
}
public String getname() {
return name;
}
//添加一个抽象方法
public abstract void show();
}
public class Test {
public static void main(String[] args) {
String d1 = Direction.FRONT.getname();
System.out.println(d1);// 前
Direction.BEHIND.show();// 后
}
}