javaSE-面向对象-接口

来源:互联网 发布:pe下安装linux的iso 编辑:程序博客网 时间:2024/04/25 11:36
格式:

    interface 接口名{}

接口中的成员修饰符是固定的。
成员常量:public static final
成员函数:public abstract
发现接口中的成员都是public的。
接口的出现将“多继承”通过另一种形式体现出来,即“多实现”。

接口的特点

l接口是对外暴露的规则
l接口是程序的功能扩展
l接口的出现降低耦合性
l接口可以用来多实现
l类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口。
l接口与接口之间可以有继承关系。

接口与抽象类

共  性:

都是不断抽取出来的抽象的概念

区别 1:

抽象类体现继承关系,一个类只能单继承

接口体现实现关系,一个类可以多实现

区别 2:

抽象类是继承,是 "is a "关系

接口是实现,是 "like a"关系

区别 3:

抽象类中可以定义非抽象方法,供子类直接使用

接口的方法都是抽象,接口中的成员都有固定修饰符

/*如果一个抽象类的方法都是抽象的,这时可以将抽象类用另一种形式来体现。就是接口。 接口定义的关键字就是 interface *//*abstract class AbsDemo{abstract void show();abstract void method();}*/interface InterDemo{/*接口中成员的定义:常见成员有两种:1,全局常量。2,抽象方法。接口中的成员都是public的。接口:子类必须实现了接口中所有的抽象方法后,子类才可以实例化。否则,该子类是一个抽象类。*/public static final int X = 3;public abstract void method1();public abstract void method2();}class Demo implements/*实现*/ InterDemo{public void method1(){}public void method2(){}}class  InterfaceDemo{public static void main(String[] args) {Demo d = new Demo();System.out.println(d.X);System.out.println(Demo.X);System.out.println(InterDemo.X);}}
/*接口的好处:是将多继承进行改良,用多实现进行体现。一个类只能继承一个类,但是一个类可以实现多个接口。另一个体现。一个类在继承另一个类的同时,还可以实现多接口。接口的出现避免了单继承的局限性。*/interface DemoA{public void show();}interface DemoB{public void show();}class DemoC{}class Demo extends DemoC implements DemoA,DemoB//多实现。{public void show(){}}interface A{void show();}interface B{void show();}interface C extends B,A//接口之间存在着多继承。{}class InterfaceDemo2 {public static void main(String[] args) {System.out.println("Hello World!");}}/*抽象类中没有抽象方法的举例。*/interface Inter{public void method1();public void method2();public void method3();}//没有抽象方法的抽象类。abstract class Test implements Inter{public void method1(){}public void method2(){}public void method3(){}}class Test1 extends Test{public void method1(){System.out.println("test1,method1 run);}}class Test2 extends Test{public void method2(){System.out.println("test2,method2 run);}}/*class Test1 implements Inter{public void method1(){System.out.println("test1,method1 run);}public void method2(){}public void method3(){}}class Test2 implements Inter{public void method1(){}public void method2(){System.out.println("test2,method2 run);}public void method3(){}}*/

interface A{void show1();void show2(); }interface B{void show ();}interface C extends A,B{}abstract class D implements A{@Overridepublic void show2() {}@Overridepublic void show1() {// TODO Auto-generated method stub}}


0 0
原创粉丝点击