Java接口的实现应用场景是什么,如何使用呢
导读:今天就跟大家聊聊有关“Java接口的实现应用场景是什么,如何使用呢”的内容,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 接口概述 当需要从几个类中派生出一个类,继承他们...
今天就跟大家聊聊有关“Java接口的实现应用场景是什么,如何使用呢”的内容,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。接口
概述
- 当需要从几个类中派生出一个类,继承他们所有的属性和方法,JAVA没有多重继承需要用接口实现
- 从几个类中抽取出一些共同的行为特征,而他们之间又没有is-a的关系,也需要借助接口实现
- 接口本质是契约,规范
使用
- 接口中使用interface来定义
- 接口和类是两个不同的结构
- 接口中不能定义构造器(也就不能实例化)
- 接口通过类来实现implements
- JAVA类可以实现多个接口格式:class AA extends BB interface CC,DD
- 接口与接口之间可以继承,并且可以多继承
- 接口体现了多态性
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("打印机结束工作"); } }
- 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 上海"); } }
代理模式
- 代理模式就是为其他对象提供一种代理以控制对这个对象的访问
- 实例
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(); } }
内部类
- JAVA允许将一个类A声明在另一个类B中,则类A是内部类,类B是外部类
- 内部类分类
- 成员内部类
- 静态 static
- 非静态
- 局部内部类
- 方法内
- 代码块内
- 构造器内
- 实例化内部类对象
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("猫吃鱼"); } } }
- 调用外部类结构
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 } } }
- 接口与抽象类
- 相同点:不能实例化;都包含抽象方法;能被继承
- 不同点:抽象类有构造器,接口没有构造器;抽象类只有单继承,而接口可以多继承;抽象类extands继承,接口implements实现
现在大家对于Java接口的实现应用场景是什么,如何使用呢的内容应该都清楚了吧,希望大家阅读完这篇文章能有所收获。最后,想要了解更多Java接口的实现应用场景是什么,如何使用呢的知识,欢迎关注网络,网络将为大家推送更多相关知识点的文章。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Java接口的实现应用场景是什么,如何使用呢
本文地址: https://pptw.com/jishu/653018.html