黑马程序员-----接口
来源:互联网 发布:管家婆软件下载地址 编辑:程序博客网 时间:2024/05/22 10:44
什么叫固定的?就是没有写就给你加上!!你不加阅读性差!
简单理解:当一个抽象类中的方法都是抽象的时候,这时可以将该抽象类用另外一种形式来定义和表示,那就是接口 interface。
被定义的接口编译生成的也是class字节码文件。
//定义接口用的是interface,而不是class
抽样类就创建子类去继承(部分覆盖)
而接口就创建子类去实现,为什么叫实现?因为接口里面都是抽象类,要实现里面全部的功能。(全部覆盖)
再说一遍:类与类之间是继承关系,类与接口之间是实现关系。
子类实现接口后调用方法。
实现方法没有方法体,子类同时覆盖掉接口方法,不存在不确定性。
子类如果不覆盖接口中的方法,子类自己就变成抽象类了!
接口的出现避免了单继承的局限性。
接口可以多继承,原因就是接口中的方法没有方法体!!
接口的特点:
凡是对外暴露的,都是接口~~!
首先犬类 和 导盲类,那个需要抽象继承?那个需要实现接口?
在我认为犬类应该是被继承的,因为它是所有犬科抽取出来的一个基类,而导盲是一个额外的一个功能(原本没有的),
而且基类中有很多的功能不需要覆盖可以直接调用使用!
然而为什么不直接把导盲这个功能直接放在导盲犬里面呢?打个比方,来个猪,猫,狼他们也许都会导盲呢?是不是每个都要定义一下?复用性就不高了!
况且生活中我们需要到导盲这个
功能的时候,是不是不管具体的物体,而是看它有没有这个功能!有就上呗~~!!没有不用你!!
笔记本电脑例子
/*笔记本电脑使用。为了扩展笔记本的功能,但日后出现什么功能设备不知道。定义一个规则,只要日后出现的设备都符合这个规则就可以了。规则在java中就是接口。*/interface USB// 暴露的规则。{public void open();public void close();}class BookPC{public static void main(String[] args){useUSB(new UPan());//功能扩展了。useUSB(new UsbMouse());}//使用规则。public static void useUSB(USB u)//接口类型的引用,用于接收(指向)接口的子类对象。//USB u= new UPan();{if(u!=null){u.open();u.close();}}}//一年后。------------------------------//实现规则。//这些设备和电脑的耦合性降低了。class UPan implements USB{public void open(){System.out.println("upan open");}public void close(){System.out.println("upan close");}}class UsbMouse implements USB{public void open(){System.out.println("UsbMouse open");}public void close(){System.out.println("UsbMouse close");}}/*class Mouse{}class BookPC{public static void main(String[] args){useMouse(new Mouse());}public static void useMOuse(Mouse m){m.open();}public static void useMOuse(Mouse m){m.open();}}*/
练习过程中出现的错误:
传入子类对象的时候漏写括号~~~o(╯□╰)o~!!
0 0
- 黑马程序员:接口问题
- 黑马程序员_接口
- 23.黑马程序员-接口
- 黑马程序员----接口
- 黑马程序员---8、接口
- 黑马程序员---之"接口"
- 黑马程序员------c#接口
- 黑马程序员--接口
- 黑马程序员C#接口
- 黑马程序员_接口
- 黑马程序员 接口 总结
- 黑马程序员--接口
- 黑马程序员--接口
- 黑马程序员-接口
- 黑马程序员_java_接口
- 黑马程序员-----接口
- 黑马程序员_接口
- 黑马程序员___接口
- be a geek-从零开始学编程:无处不在的Javascript 3
- ubuntu下hadoop运行wordcount程序
- BAT或赌在当下或押在未来,谁是王者?
- hdu 1061 快速幂取模!!!!!
- java与Go的交流
- 黑马程序员-----接口
- 关于oracle查找字符串和截取字符串
- Android自定义照相机 预览拍照 切换前后置摄像头
- Eclipse开发J2EE
- Boston Key Party CTF 2014 Crypto 200
- 如何去替换arraylist中对应索引中的数据
- Python easy_install 遇到“ImportError: No module named pkg_resources”错误
- [Leetcode] - Simplify Path
- think in java第二章学习