接口的使用限制:接口里只允许存在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:UsersLenovoAppDataRoamingTyporatypora-user-imagesimage-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:UsersLenovoAppDataRoamingTyporatypora-user-imagesimage-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:UsersLenovoAppDataRoamingTyporatypora-user-imagesimage-20210924095308794.png)]
com.plugin(new Flash());
com.plugin(new Print());
}
}
[外链图片转存中...(img-6SyzfiC7-1633234196460)]



