public Dlg { interface Me {} class You implements Me {} public static void main(String[] args) {
/*接口是Object么?*/
Me me = new You();
You you = new You();
System.out.println(Dlg.class.getSuperClass()); //class java.lang.Object
System.out.println(Me.class.getSuperClass()); //*null*
System.out.println(me.class.getSuperClass()); //class java.lang.Object
System.out.println(You.class.getSuperClass()); //class java.lang.Object
System.out.println(you.class.getSuperClass()); //class java.lang.Object
/*接口到底是个什么货?*/
}}
http://blog.csdn.net/jia20003/article/details/7399800
手机,照相机,移动硬盘等等设备内部是怎么运作的?你肯定不知道~但是他们大多都实现了USB接口,所以电脑可以与之连接并访问数据。
在程序中也是一样的,公共类和第三方写的类你不能也不需要知道他到底是怎么实现的,但是它们大多实现了你能知道的接口,于是你就能使用它~
通过上边的例子,可以学习到:1、一个类实现了接口,如果没有显式继承其他类,那么他的父类就是Object。2、定义的变量,不管修饰变量的是接口还是类,实际变量的getClass()返回的都是new出来的类型,这里就像Me me = new You();me的getClass()是You。
Interface i = new Car();
i.go("北京");如果我现在想换成跑车
Interface i = new Roadster();
i.go("北京");如果···(可以写很多)只要Car,Roadster实现了Interface,
我可以随时很方便的换,而且这个i我不用改它,只改实现就好。
class Her extends You{}
在程序中定义2个变量
Me her1 = new Her();
You her2 = new Her();
打印System.out.println(her1.getClass() + "," + her2.getClass());结果是Her,Her
从本质上讲,接口是一种特殊的抽象类,这种抽象类中包含常量和方法的定义,而没有变量和方法的实现。
接口定义举例:
public interface Rnner {
int id = 1;
public void start();
public void run();
public void stop();
}
特性:多个无关的类可以实现同一个接口
一个类可以实现多个无关的接口
与继承关系类似,接口与实现类之间存在多态性。
定义java类的语法格式:<modifier> class <name> [extends<superclass>]
[implements<interface>[,<interface>]*{
<declarations>*
}
接口中声明属性默认为public static final的;也只能是public static final
接口中只能定义抽象方法,而且这些方法默认为public也只能是public
接口中可以继承其他的接口,并增加新的属性和方法
接口中只能有抽象方法和常量,不能有变量和方法的实现。
接口,不是一个类,没有构造器,不能实例化。
通常,我们定义一个接口(只声明方法,定义常量),然后让多个无关的类实现这个接口。在调用时,我们可以定义一个接口的引用,指向具体的实现类的对象(Interface i = new implementClass();),这样,用接口的引用,调用接口中的方法,实际上,执行的是具体类的方法,但如何实现,对外是不可见的,实现了封装,体现了面向接口编程的思想。