写给自己的JAVA工程师之路-接口
来源:互联网 发布:刘嘉玲被强奸知乎 编辑:程序博客网 时间:2024/06/16 06:23
1.1 接口的基本概念
接口是一种特殊的类,但是在接口里面的组成与类不同,比类的组成部分简单,主要由抽象方法和全局常量所组成。而接口使用interface关键字定义。
interface A{public static final String MSG="HELLO WORLD";public abstract void print();}
1)接口一定要定义子类,子类利用implements关键字实现接口,一个子类可以实现多个接口。
2)接口的子类如果不是抽象类,那么必须覆写接口的全部抽象方法。
3)接口的对象利用子类的向上转型进行实例化对象。
4)抽象类可以实现接口,但是接口不能继承抽象类,一个接口却可以使用extends继承多个父接口。
5)虽然接口本身只能够有抽象方法和全局常量,但是内部结构是不受到限制的,那么也就是说一个接口的内部可以继续定义内部类,内部抽象类和内部接口。如果一个内部接口上使用了static定义,那么这个内部接口就属于外部接口。
6)接口中的权限统一为public,一般不会定义全局常量。
实际开发中接口的三个原则:
制定操作标准。
表示一种能力。
将服务器端的远程方法视图提供给客户端。
神奇操作:B和A鸟关系都没有,但是可以转换,是因为X是子类。
interface A{public static final String MSG="HELLO WORLD";public abstract void print();}interface B{public abstract void fun();}class X implements A,B{@Overridepublic void fun() {System.out.println("我不想说话");}@Overridepublic void print() {System.out.println(MSG);}}public class InterDemo {public static void main(String[] args) {//X x=new X();//实例化子类对象//A a=x;//子类对象为父接口实例化//B b=x;//子类对象为父接口实例化A a=new X();//子类对象为父接口实例化B b=(B)a;//我也不理解b.fun();}}
1.2 接口的实际应用
interface USB{public void start();public void stop();}class Computer{public void plugin(USB usb){usb.start();usb.stop();}}class Flash implements USB{@Overridepublic void start() {System.out.println("USB开始工作");}@Overridepublic void stop() {System.out.println("USB结束工作");}}class KeyBoard implements USB{@Overridepublic void start() {System.out.println("键盘开始工作");}@Overridepublic void stop() {System.out.println("键盘结束工作");}}public class InterDemo {public static void main(String[] args) {Computer c=new Computer();c.plugin(new Flash());c.plugin(new KeyBoard());}}
1.3 工厂设计模式
现在有这样一个代码:
interface Fruit{public void eat();}class Apple implements Fruit{public void eat(){System.out.println("吃苹果");}}public class InterDemo {public static void main(String[] args) {Fruit f=new Apple();}}
那么如果要想解决这个问题,可以参考Java的可移植性的实现原理:
不可移植性:程序 → 操作系统
可移植性:程序 → JVM → 操作系统
interface Fruit{public void eat();}class Apple implements Fruit{public void eat(){System.out.println("吃苹果");}}class Cherry implements Fruit{public void eat(){System.out.println("吃樱桃");}}class Factory{public static Fruit getIns(String classname){if("apple".equals(classname)){return new Apple();} else if ("cherry".equals(classname)) {return new Cherry();}else {return null;}}}public class InterDemo {public static void main(String[] args) {Fruit f=Factory.getIns(" ");}}
1.4 代理设计模式
所谓的代理结构指的是在接口上的一种应用,一个接口有一个核心的操作主题,但是在整个操作过程中,只依靠核心的操作主题是无法完成所需要功能的,那么需要一个代理的主题。
interface Subject{//核心操作主题public void b();}class RealSubject implements Subject{public void b(){System.out.println("进行数据操作");}}class ProxySubject implements Subject{private Subject subject;//代理真实主题public ProxySubject(Subject subject){this.subject=subject;}public void a(){System.out.println("数据库连接");}public void b(){this.a();subject.b();this.c();}public void c(){System.out.println("断开连接");}}public class InterDemo {public static void main(String[] args) {Subject s=new ProxySubject(new RealSubject());s.b();}}
1.5 抽象类与接口的区别
接口,抽象类,类,对象
不同点:
1 定义关键字
2 组成3 权限
4 子类实现
5 关系
6 设计模式
阅读全文
0 0
- 写给自己的JAVA工程师之路-接口
- 写给自己的JAVA工程师之路-数据链路层
- 写给自己的JAVA工程师之路-计划
- 写给自己的JAVA工程师之路-异常
- 写给自己的JAVA工程师之路-链表
- 写给自己的JAVA工程师之路-单例模式
- 写给自己的JAVA工程师之路-网络体系结构
- 写给自己的JAVA工程师之路-抽象类
- 写给自己的JAVA工程师之路-物理层
- 写给自己的JAVA工程师之路-MySQL函数
- 写给自己的JAVA工程师之路-枚举
- 写给自己的JAVA工程师之路-多线程
- 写给自己的JAVA工程师之路-基础类库
- 写给自己的JAVA工程师之路-正则表达式
- 写给自己的JAVA工程师之路-约束和修改数据表
- 写给自己的JAVA工程师之路-子查询与连接
- 写给我的JAVA工程师之路-数据表操作
- 写给自己——我的求职之路
- 【OpenCV学习笔记】2:开启摄像头和对捕获到的图像的处理
- Linux五种I/O模型
- 欢迎使用CSDN-markdown编辑器
- 代码之外_教你做坏人
- 我的Java课程学习5——猜数字游戏
- 写给自己的JAVA工程师之路-接口
- 从0开始写一个 SGX
- 输出希腊字母表
- 一道有意思的笔试题引发的对于new操作符的思考
- 【基础算法】(02) 十二种排序算法(第二篇)
- 顺序栈的基本实现
- bzoj 3196: Tyvj 1730 二逼平衡树 树套树
- 程序员必须知道的几个Git代码托管平台
- 【C++11】thread_local/TLS/线程本地存储