接口存在的意义:
一直对java中接口的作用不是太明了。虽说一个类可以implements多个接口,但接口本身只是定义了几个方法,没有任何实际的意义,具体的实现还是要在实现它的类中进行。这样的话,接口还有什么意义呢?
举个例子来说,现有
public interface I{ method1(){}; } class A implements I{ method1() {
这样写和不实现接口,直接将method1作为class A的方法有什么区别呢?
即:
class A{ method1() {
能不能具体举个例子来说明它们在使用上的区别呢?
回答:
接口的最主要的作用是达到统一访问,就是在创建对象的时候用接口创建,【接口名】 【对象名】=new 【实现接口的类】,这样你想用哪个类的对象就可以new哪个对象了,不需要改原来的代码,就和你的USB接口一样,插什么读什么,就是这个原理。就像你问的,都有个method1的方法,如果我用接口,我上面就可以one.method1();是吧?那样我new a();就是用a的方法,new b()就是用b的方法
这样不方便吗?
这个就叫统一访问,因为你实现这个接口的类的方法名相同,但是实现内容不同
我用接口来定义对象不就可以做到统一访问了吗?接口主要针对多个类实现它来说的,要是只有一个类当然可以不用接口了.你这样想,我做一个USB接口,有个read()抽象方法,然后mp3类实现,U盘类实现,移动硬盘类实现,这样我用的时候用USB a=new 【类名】;这样a.read();要是我类名里写U盘,就读U盘,写mp3就读mp3,而这个名字可以从属性文件里读,你写哪个就用哪个了。
**********************************************************************************************************************
接口的引入:
当一个抽象类中的所有方法都是抽象的时候,这时可以将该抽象类用另一种形式定义和表示,这就是接口,关键字interface.
格式:
interface Demo{
public static final int NUM = 3;
public abstract void show1();
public abstract void show2();
}
对于接口当中常见的成员:(而且这些成员都有固定的修饰符)
1.全局常量:public static final
2.抽象方法:public abstract
由此得出结论:接口中的成员都是公共的权限。
**********************************************************************************************************************
实现:关键字implements
注:类与类之间是继承关系,类与接口之间是实现关系。
实现的引入:因为抽象类里的抽象方法只有实现(子类方法覆盖)后才可以用。
格式:
class DemoImpl implements Demo{
public void show1(){
}
public void show2(){
}
}
注意:1.接口类是把接口中所有的内容都拿过来,所以接口类不能实例化;
2.只有由实现了接口的子类并覆盖了接口中所有的抽象方法后,该子类才可以实例化。
接口是类不能多继承的改良:
因为类多继承会造成方法调用的不确定性,而多实现不会。主要区别在于有无方法体。
例子:
interface A{ public void show(); } interface Z{ public void show(); } class Test implements A,Z{ public void show() { } }