接口与抽象类 总结
同 都是不断向上抽取而来的
异 1 抽象类需要被继承 而且只能单继承 接口需要被实现 而且可以多实现
2 抽象类中可以定义抽象方法和非抽象方法 子类继承可以直接使用非抽象方法
而接口必须定义抽象方法 必须由子类去实现
3 抽象类的继承是所有关系 定义该体系的基本共性内容 比如 程序员 经理都是雇员
接口的实现是like a 实现 定义体系额外功能 比如学生有学习功能但抽烟功能是额外功能啊
以笔记本usb接口为例 讨论
为何鼠标 u盘都可以接笔记本
究其原因无非是 usb接口是定义好的规则 其他设备只要按照这个规则去设计就可以让笔记本使用
该设备 而接口规则的具体实现在不同设备是完全可以自己定义的
package cn.abstractTest;
interface Usb{//暴露在外面的规则
abstract void open();
abstract void close();
}
//使用接口让设备与 电脑 的耦合性就较低了
//实现规则
class UsbMouse implements Usb
{
public void open()
{
System.out.println("UsbMouse OPEN");
}
public void close()
{
System.out.println("UsbMouse close");
}
}
//实现规则 多实现同一个规则
class UsbPan implements Usb
{
public void open()
{
System.out.println("UsbPAN OPEN");
}
public void close()
{
System.out.println("Upan close");
}
}
public class BookPc {
public static void main(String[] args) {
// TODO Auto-generated method stub
UsbMouse u = new UsbMouse();
useUsb(u);
useUsb(new UsbPan());//功能扩展
}
//使用规则
public static void useUsb(Usb u)
//接口类型的引用,用于接收指向接口的子类对象(多态)
{
u.open();
u.close();
}
}