接口:
jdk1.8及之后新增了2种可以定义存在方法体的方法:
默认方法 (default关键字修饰的方法 )
使用:通过实现类对象使用
静态方法 (掌握)
使用:通过接口名去调用
目前接口中:
- 必须有抽象方法
- 可以有公共的静态常量
- 可以有静态方法
- 可以有默认方法
所以接口目前可以存在的方法有:抽象方法,静态方法,默认方法,和静态常量
public class Demo01 {
public static void main(String[] args) {
Demo001 d=new Demo001();
d.hehe();
Ab.haha();
}
}
interface Ab{
public static void haha(){
//静态的接口方法通过类名调用
System.out.println("hahahahaha");
}
public default void hehe(){
//默认的接口方法通过对象去调用
System.out.println("hehehehehe");
}
}
class Demo001 implements Ab {
}
单例模式
保证类只能存在一个实例
饿汉式 : 先创建对象,然后需要的人要这个对象,保证永远使用的都是这个创建好的对象–>线程安全的,效率相对较低; 类第一次加载完成之后就创建对象
懒汉式 : 当调用功能要对象的时候才会创建这个对象 --线程不安全,效率相对较高
实现单例 的类依旧可以正常定义其他内容,但是控制构造器,添加实现方式3步,保证这个类可以实现单例; 但是单例的类中定义的成员内容,在获取到该类对象后依旧可以正常使用
单例的实现方式:
- 构造器私有化
- 提供一个私有的静态的该类的引用
- 公共的访问方式(提供一个对象)
饿汉式:
public class Ehan {
public static void main(String[] args) {
Ehan e=Ehan.newInstance();//右边的对象赋值给左边
System.out.println(e);
System.out.println(e.newInstance());
System.out.println(e.newInstance());
}
private static Ehan e=new Ehan(