1: interface接口
接口:
特殊的抽象类
是一个引用数据类型
功能的集合(抽象方法的集合)
继承与实现:
类的继承:子类一旦继承父类,就有权使用父类中的内容,拿过来就可以直接使用
接口需要实现:实现类一旦实现一个接口,需要对接口中的功能进行实现->重写,然后才能使用
侧重点不同
类智能单继承,接口可以多实现
接口便于后期维护,更加灵活
接口实现解耦(高内聚低耦合)
定义开发规范
推荐使用接口,但是接口不能完全代替父类
jdk7及之前:
公共的静态的常量 public static final->默认可以任意省略
公共的抽象的方法 public abstract->默认可以任意省略
jdk8及以后:
接口的使用
1.不能实例化
2.接口需要被实现,通过implenments关键字进行实现
3.根据实现类对象使用
具体实现类:重写所有的抽象方法+按需新增
抽象实现类:按需重写抽象方法+按需新增
4.类只能单继承类,类可以多实现接口,需要重写多个抽象方法
5.类与接口之间只能是类实现接口,可以多个实现
6.接口与接口之间.可以多继承
7.一个类需要先继承后实现
java8接口新增的内容:
1.静态方法
只能跟随接口名使用
2.默认方法
被default关键字修饰方法
跟随实现类对象调用
实现类可以进行重写
2.单列模式
某个类型只能拥有单个实例->单列模式
实现方式:
1.饿汉式:在类第一次加载完成之后,就创建实例,线程安全的,同步的,一般效率较低
2.懒汉式:在调用的时候,创建实例.线程不安全,不同步的,一般效率较高
步骤:
1.私有的构造器
2.私有的静态的该类的引用->(指向创建好的那个对象)
3.公共静态的访问方式->返回值提供一个当前类型的实例
饿汉式:
public class Class001_Single {
//2.私有的静态的该类的引用
private static Class001_Single single = new Class001_Single();
//1.私有的构造器
private Class001_Single(){}
//3.公共静态的访问方式
public static Class001_Single newInstance(){
return single;
}
}
懒汉式
class SingleTon{
//2.私有的静态的该类的引用
private static SingleTon single = null;
//1.私有的构造器
private SingleTon(){}
//3.公共静态的访问方式
public static SingleTon newInstance(){
if(single==null){
single = new SingleTon();
}
return single;
}
}
测试类->对以上两个代码进行引用:
public class Class002_Test {
public static void main(String[] args) {
//饿汉式
Class001_Single single= Class001_Single.newInstance();
System.out.println(single);
System.out.println(Class001_Single.newInstance());
System.out.println(Class001_Single.newInstance());
System.out.println(Class001_Single.newInstance());
//懒汉式
System.out.println(SingleTon.newInstance());
System.out.println(SingleTon.newInstance());
System.out.println(SingleTon.newInstance());
System.out.println(SingleTon.newInstance());
}
}
3:代理模式
静态代理->真实角色->代理角色
条件:真实角色与代理角色要求实现相同的接口
代理角色需要持有真实角色的引用-->通过属性来维护
减少与真实角色的沟通,让程序便于后期维护
动态代理