面向抽象编程:所有的对象所属的类都应该尽可能由抽象类或接口而来。
接口的解释:
1,接口是一个契约(合同),体现在接口的名称上。
2,接口是一种能力,体现在接口的方法上。相当于合同中的某个具体的条款。
*接口本身和继承没有关系的。
*接口是一种约定。
实现了某个接口的类,也就应该具有这个接口所应该是具有某种能力。
接口的例子(jdk源代码):
public interface Comparator<T> { //契约的名字
int compare(T o1, T o2); //契约的条款1
boolean equals(Object obj); //契约的条款2
}
interface关键字
在软件开发领域所谓“接口”有两个含义(虚拟接口)。
1,指的是面向对象开发语言中特有的特殊的抽象类。即interface。
2,指的是所有的开发语言中,对库或包对外暴露的可以访问的方法或属性。例子:API(application Programing Interface)
*USB接口和上面的两类接口都不一样,是实体接口。
接口的特性:
1,接口不可以被实例化。
2,实现类必须实现接口中的所有的方法,抽象类除外。
3,实现类可以实现多个接口。
4,接口中的变量都是静态常量。
在接口中声明的变量都是默认被public static final修饰的。
在接口中声明的方法都是默认被public abstract修饰。
5,接口也支持多态调用,接口的多态叫接口多态,继承的多态叫继承多态。
接口在面向对象中的定位:
1,接口是一个契约(合同)
2,接口是一种标准,符合这种标准的类必须实现这个接口,接口的名字保证了这个标准。
3,接口代表一种能力,接口的方法体现了这种能力。
接口中声明的方法默认为public
接口中声明的变量默认为public static final
例子:小汽车要想在欧洲销售必需符合欧IV标准。
public interface e4{
public void paifan();
}
public class A3Car implements e4{
public void paifan(){
...
}
}
面向抽象编程:所有的类都应该继承或实现一个抽象类或一个接口。也就是说,应用程序的系统是建立抽象基础上的。
Java接口与C#接口对比
Java接口 C#接口
定义 interface interface
实现 implements :
继承 extends :
静态成员 常量 无
public 可以显示使用 不能显示使用
打印机与墨盒及打印纸使用接口的例子:
public interface InkBox {
public String getColor();
}
public interface Paper {
public String getSize();
}
public class Printer {
public void print(InkBox inkBox,Paper paper){
System.out.println("使用"+inkBox.getColor()+"墨盒在"+paper.getSize()+"纸张上打印。");
}
}
public class ColorInkBox implements InkBox {
public String getColor() {
return "彩色";
}
}
public class A4Paper implements Paper {
public String getSize() {
return "A4";
}
}
|
|