首页后端开发其他后端知识Java接口的实现应用场景是什么,如何使用呢

Java接口的实现应用场景是什么,如何使用呢

时间2024-03-25 20:26:03发布访客分类其他后端知识浏览1484
导读:今天就跟大家聊聊有关“Java接口的实现应用场景是什么,如何使用呢”的内容,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 接口概述 当需要从几个类中派生出一个类,继承他们...
今天就跟大家聊聊有关“Java接口的实现应用场景是什么,如何使用呢”的内容,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

接口

概述

  1. 当需要从几个类中派生出一个类,继承他们所有的属性和方法,JAVA没有多重继承需要用接口实现
  2. 从几个类中抽取出一些共同的行为特征,而他们之间又没有is-a的关系,也需要借助接口实现
  3. 接口本质是契约,规范

使用

  1. 接口中使用interface来定义
  2. 接口和类是两个不同的结构
  3. 接口中不能定义构造器(也就不能实例化)
  4. 接口通过类来实现implements
  5. JAVA类可以实现多个接口格式:class AA extends BB interface CC,DD
  6. 接口与接口之间可以继承,并且可以多继承
  7. 接口体现了多态性
public class UsbTest {

    public static void main(String[] args) {
    
        Computer com =new Computer();
    
        Flash flash=new Flash();
    
        com.transferData(flash);
     // USB usb =new Flash()
        com.transferData(new Printer());

        /*
		* U盘开始工作
		* 传输数据
		* U盘结束工作
		* 打印机开始工作
		* 传输数据
		* 打印机结束工作
		* 
		* */
    }
}
class Computer{

    public void transferData(USB usb){
    
        usb.start();
    
        System.out.println("传输数据");
    
        usb.stop();

    }
}
interface USB{
    
    void start();
    
    void stop();
}
class Flash implements USB{


    @Override
    public void start() {
    
        System.out.println("U盘开始工作");

    }


    @Override
    public void stop() {
    
        System.out.println("U盘结束工作");


    }
}
class Printer implements USB{


    @Override
    public void start() {
    
        System.out.println("打印机开始工作");


    }


    @Override
    public void stop() {
    
        System.out.println("打印机结束工作");


    }
}
  1. JDK8的写法
  • 接口中定义的静态方法,只能通过接口调用
  • 通过实现类的对象,可以实现接口中的默认方法
  • 如果子类(或者实现类)继承的父类和实现的接口中声明了同名同参数方法,如果子类没有重写该方法,调用的是父类中同名同参数方法
public class JDK8Test {

    public static void main(String[] args) {
    
        SubClass sub =new SubClass();
    
        CompareA.methods1();
    
        sub.methods2();

        /*
        * Compare 北京
		* Compare 上海
        */
    }
}
class SubClass implements CompareA{
}
interface CompareA{

    public static void methods1() {
    
        System.out.println("Compare 北京");

    }

    public default void methods2() {
    
        System.out.println("Compare 上海");

    }
}

代理模式

  1. 代理模式就是为其他对象提供一种代理以控制对这个对象的访问
  2. 实例
public class NetWorkTest {

    public static void main(String[] args) {
    
        Server server=new Server();
    
        ProxyServer proxyServer=new ProxyServer(server);
     // 放的是被代理对象进去
        proxyServer.browse();
 // 调用的是代理对象,但结果是真实对象的方法被调用
        /*
        * 检查工作
		* 真实服务器访问网络
        */
    }
}
interface NetWork{
    
    void browse();
}
// 被代理类class Server implements NetWork{


    @Override
    public void browse() {
    
        System.out.println("真实服务器访问网络");

    }
}
// 代理类class ProxyServer implements NetWork{
    
    private NetWork work;

    public ProxyServer(NetWork work){
    
        this.work=work;

    }

    public void check(){
    
        System.out.println("检查工作");

    }


    @Override
    public void browse() {
    
        check();
    
        work.browse();

    }
}

内部类

  1. JAVA允许将一个类A声明在另一个类B中,则类A是内部类,类B是外部类
  2. 内部类分类
  • 成员内部类
    • 静态 static
    • 非静态
  • 局部内部类
    • 方法内
    • 代码块内
    • 构造器内
  1. 实例化内部类对象
public class InnerClassTest {

    public static void main(String[] args) {
    
        // 实例化Dog,静态类
        Pseson.Dog dog=new Pseson.Dog();
    
        dog.eat();
    
        // 吃骨头
        // 实例化Cat,非静态类
        Pseson p1 =new Pseson();
    
        Pseson.Cat cat=p1.new Cat();
    
        cat.eat();

        // 猫吃鱼
    }
}
class Pseson{
    
    String name;
    
    int age;

    public void eat(){
    
        System.out.println("吃饭");

    }

    static class Dog{
    
        String name;
    
        int age;

        public void eat(){
    
            System.out.println("吃骨头");

        }

    }

    class Cat{

        public void eat(){
    
            System.out.println("猫吃鱼");

        }

    }
}
  1. 调用外部类结构
public class InnerClassTest {

    public static void main(String[] args) {
    
        // 实例化Cat,非静态类
        Pseson p1 =new Pseson();
    
        Pseson.Cat cat=p1.new Cat();
    
        cat.eat();
    
        cat.display("小花");

        /*
        * 小花
        * 波斯猫
        * 人
        */ 
    }
}
class Pseson{
    
    String name="人";
    
    int age;

    public void eat(){
    
        System.out.println("吃饭");

    }

    static class Dog{
    
        String name;
    
        int age;

        public void eat(){
    
            System.out.println("吃骨头");

        }

    }

    class Cat{
    
        String name="波斯猫";

        public void eat(){
    
            System.out.println("猫吃鱼");

        }

        public void display(String name){
    
            System.out.println(name);
     // 方法中name
            System.out.println(this.name);
     // 内部类中name
            System.out.println(Pseson.this.name);
 // 外部类中name

        }

    }
}
    
  1. 接口与抽象类
  • 相同点:不能实例化;都包含抽象方法;能被继承
  • 不同点:抽象类有构造器,接口没有构造器;抽象类只有单继承,而接口可以多继承;抽象类extands继承,接口implements实现

现在大家对于Java接口的实现应用场景是什么,如何使用呢的内容应该都清楚了吧,希望大家阅读完这篇文章能有所收获。最后,想要了解更多Java接口的实现应用场景是什么,如何使用呢的知识,欢迎关注网络,网络将为大家推送更多相关知识点的文章。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Java接口的实现应用场景是什么,如何使用呢
本文地址: https://pptw.com/jishu/653018.html
PHP如何实现切割文件上传,方法是什么? PHP如何实现图片压缩功能,实现方法是什么?

游客 回复需填写必要信息