2018/2/18
1.对于面向接口和面向对象的区别
首先,面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分。或者说,它是面向对象编程体系中的思想精髓之一。
2.接口的本质和意义
接口,在表面上是由几个没有主体代码的方法定义组成的集合体,有唯一的名称,可以被类或其他接口所实现(或者也可以说继承)
接口是一组规则的集合,规定了实现本接口的类和接口必须拥有的一组规则,体现了自然界“若果你是......则必须能....”的理念
例如,在自然界中,人都能吃饭,即“如果你是人,则必须能吃饭”。那么模拟到计算机程序中,就应该有一个IPerson(习惯上,接口名由“I”开头)接口,并有一个方法叫Eat(),然后我们规定,每一个表示“人”的类,必须实现IPerson接口,这就模拟了自然界“如果你是人,则必须能吃饭”这条规则。
面向对象思想的核心之一,就是模拟真实世界,把真实世界中的事物抽象成类,整个程序靠各个类的实例互相通信、互相协作完成系统功能,这非常符合真实世界的运行状况,也是面向对象思想的精髓。
3.简单代码的实现(打印机)
/*将墨盒和纸张定义为接口*/
package Package3.iface;
/*墨盒接口
* 获得墨盒的颜色*/
public interface IInkBox {
public String getColor();
}
package Package3.iface;
/*纸张接口
* 定义获得纸张的大小尺寸*/
public interface Ipaper {
String getSize();//获得纸张的尺寸
}
package package4;
import Package3.iface.A4Paperimpl;
import Package3.iface.blackInkBoximpl;
import Package3.iface.colorInkBoximpl;
public class printerText {
public static void main(String[] args) {
Printer printer=new Printer();
//为打印机安装纸张和墨盒
printer.setInkbox(new blackInkBoximpl());
printer.setPaper(new A4Paperimpl());
printer.print("测试内容");
}
}
package Package3.iface;
/*实现彩色墨盒的实现类*/
public class colorInkBoximpl implements IInkBox//对接口的使用
{
@Override
public String getColor() {
// TODO Auto-generated method stub
return "彩色";
}
}
package Package3.iface;
public class blackInkBoximpl implements IInkBox {
@Override
public String getColor() {
// TODO Auto-generated method stub
return "黑白";
}
}
package Package3.iface;
public class A4Paperimpl implements Ipaper {
@Override
public String getSize() {
// TODO Auto-generated method stub
return "A4";
}
}