// 单例类
public class A {
// 2、定义一个静态变量记住类的一个对象
private static A a = new A();
// 1、私有构造器
private A(){
}
// 3、定义一个静态方法返回对象
public static A getObject(){
return a;
}
}
单例类有很多形式
如"饿汉式单例":拿对象时,对象早就创建好了。
java复制代码
public class A {
// 2、定义一个静态变量记住类的一个对象
private static A a = new A();
// 1、私有构造器
private A(){
}
// 3、定义一个静态方法返回对象
public static A getObject(){
return a;
}
}
如"懒汉式单例":拿对象时,才开始创建对象。
特点:延迟加载对象
写法:
把类的构造器私有。
定义一个静态变量由于存储对象。
提供一个静态方法,保证返回的是同一个对象。
java复制代码
public class B {
// 2、定义一个类变量量用于存储对象
private static B b ; // null
// 1、单例必须私有构造器
private B(){
}
// 3、提供一个类方法返回类的一个对象
public static B getObject(){
if(b == null){
b = new B();
}
return b;
}
}
枚举类
枚举类是一种特殊类。
写法
java复制代码
修饰符 enum 枚举类名{
名称1 , 名称2, ... ;
其他成员...
}
特点:
枚举类中的第一行,只能写枚举类的对象名称,其要用逗号隔开。
这些名称,本质是常量,每个常量都记住了枚举类的一个对象。
java复制代码
public enum A{
X , Y , Z;
}
Compiled from "A.java"
public final class A extends java.lang.Enum<A> {
public static final A X = new A();
public static final A Y = new A();
public static final A Z = new A();
public static A[] values();
public static A valueOf(java.lang.String);
}
枚举类都是最终类,不可以被继承、枚举类都是继承java.lang.Enun类的。
枚举类的构造器都是私有的(写不写都只能是私有的),因此,枚举类对外不能创建对象。
枚举类很适合做信息分类和标志。
抽象类
java中有一个关键字叫:abstract,它就是抽象的意思,可以用它修饰类、成员方法。
abstract修饰类,这个类就是抽象类
abstract修饰方法,这个方法就是抽象方法。
java复制代码
修饰符 abstract class 类名{
修饰符 abstract 返回值类型 方法名称(形参列表);
}
public abstract class A {
// 抽象方法:必须abstract修饰,只有方法签名,不能有方法体
public abstract void test();
}