接口的使用限制:接口里只允许存在public权限,不管是属性还是方法,其权限只能是public 当一个子类需要实现接口又需要继承抽象类时,先使用extends继承一个抽象类,再implements实现多个接口 一个接口可使用extends继承多个父接口
接口可以定义一系列的内部结构,包括内部的普通类、抽象类、内部接口, 其中使用static定义的内部接口相当于一个外部接口
interface INews100{ public abstract String get() ; String MSG = "www.aka.com";//即便不写public也是public } abstract class AbstractMessage implements INews100{ //只有接口中的abstract才能省略 public abstract void print(); } class NewsImpl extends AbstractMessage implements INews100{ public String get(){ //权限更严格,所以无法覆写 return MSG; } public void print(){ System.out.println("ssss"); } //有方法体就叫覆写 } public class Day12 { public static void main(String[] args) { INews100 news = new NewsImpl(); System.out.println(news.get()); //NewsImpl是抽象类和接口的共同子类 AbstractMessage am = (AbstractMessage) news; am.print(); } }
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iik03nbF-1633234196457)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20210924095141654.png)]
//代理设计模式 //代理的业务操作都会有一个与之辅助的功能类共同完成。 interface ISubject{ public void save(); //核心功能1是救人 } class RealSubject implements ISubject{ public void save(){ System.out.println("英勇的制止了犯罪分子"); } } class ProxySubject implements ISubject{ //代理实现 private ISubject subject;//真正的操作业务 //在创建代理类对象的时候必须设置要代理的真实主题 public ProxySubject(ISubject subject){ this.subject = subject; } public void broke(){ System.out.println("破门而入"); } public void get(){ System.out.println("得到见义勇为奖"); } public void save(){ //接口子类一定要实现的抽象方法 this.broke(); //真是操作前的准备 this.subject.save();//调用真实的业务 this.get(); //操作后的准备 } } class Factory100 { public static ISubject getInstance(){ return new ProxySubject(new RealSubject()); } } public class Test16 { public static void main(String[] args) { ISubject sub = Factory100.getInstance(); //通过代理类对象发出,利用代理类来实现真实业务调用 sub.save(); //救人的核心操作 } }
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k7mBbuRs-1633234196459)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20210924095224167.png)]
//使用接口定义标准 //使用接口和对象多态性的概念结合之后,对于参数统一更加明确。 interface USB{ public void setup();//安装USB驱动 public void work();//进行工作 } class Computer{ public void plugin(USB usb){//只能够插USB设备 usb.setup();//安装 usb.work(); //工作 } } class Flash implements USB{ //定义一个USB设备 public void setup(){ System.out.println("安装U盘驱动!"); } public void work(){ System.out.println("进行数据传输!"); } } class Print implements USB{ //定义一个USB设备 public void setup(){ System.out.println("安装打印机驱动!"); } public void work(){ System.out.println("进行文件打印!"); } } public class Test14 { public static void main(String[] args) { Computer com = new Computer(); com.plugin(new Flash()); com.plugin(new Print()); } }
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6SyzfiC7-1633234196460)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20210924095308794.png)]
com.plugin(new Flash()); com.plugin(new Print()); }
}
[外链图片转存中...(img-6SyzfiC7-1633234196460)]