Java基础学习12

2021/10/3 17:41:01

本文主要是介绍Java基础学习12,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

接口的使用限制:接口里只允许存在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)]



这篇关于Java基础学习12的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程