接口
接口是特殊的抽象类
接口的优点:
定义开发规范
提高代码的复用性
解耦
多实现类只能单继承
在jdk1.7之前接口中只能存在公共的静态的常量+公共的抽象方法
公共的静态的常量
public static final 数据类型 变量名=赋值;
修饰符可以省略,默认存在
公共的抽象的方法:
public abstract 返回值类型 方法名();
修饰符可以省略,默认存在
使用:类名,常量名|实现类名:常量名|实现类对象,常量名
实现类对象,方法名();
注意
1.定义接口Interface关键字
2.抽象方法必须重写
3接口如何使用:
具体的实现类去实现接口,重写里面的抽象方法;按需拓展
抽象的实现类去实现接口,重写部分的抽象方法 按需拓展
4.实现和继承很像 都能使用父类或者父接口中的功能
5.接口不能实例化
6.类只能继承类,继承只能单继承类可以多实现接口,一个类可以实现多个接口
7.接口和接口之间只能继承不能实现,接口可以继承多个接口
8.避免实现的多个接口中存在同名方法
jdk1.8新增:
1.default默认方法,是个具体的方法,只能通过实现类的对象使用
2.静态方法,只能在当前接口中使用,不能通过实现类使用
单例模式:这个类只能有一个实例
饿汉式 无论是否使用,在类加载的时候先创建一个对象 线程安全的 --效率低
懒汉式:在使用的时候才创建对象,不使用不创建 线程不安全–效率高 通过加锁控制
实现单例的步骤
1.私有的构造器
2.私有的静态的该类引用
3.公共的静态的访问方式
实现饿汉式单例
public class Single {
//2.私有的静态的该类引用 存储创建的这个类的实例
private static Single single=new Single();
//1.私有的构造器
private Single(){
}
//3.公共的静态的访问方式
public static Single newInstance(){
return single;
}
}
懒汉式单例
public class SingleTon {
//2.私有的静态的该类的引用
private static SingleTon singleTon=null;
//1.构造器私有化
private SingleTon(){}
//3.公共的静态的访问方式
// A B C
/*public static SingleTon newInstance(){
if(singleTon==null){
// A B C
singleTon=new SingleTon();
}
return singleTon;
}*/
//在方法上加锁
// A B C
/*public synchronized static SingleTon newInstance(){
if(singleTon==null){
// A B C
singleTon=new SingleTon();
}
return singleTon;
}*/
//锁块==双重锁.效率高
public static SingleTon newInstance(){
if(singleTon==null){
System.out.println("--------");
System.out.println("--------");
System.out.println("--------");
// A B C
synchronized (SingleTon.class) {
if(singleTon==null){
singleTon=new SingleTon();
}
}
}
return singleTon;
}
}