1、接口及做用函数
接口是一个很是重要的概念,理解这个,先举一个实现生活中的实例。
如今,电脑主板,有不少插槽,可用来插CPU、内存等。当CPU等元件须要更新换代升级时,只要将CPU单独更换就能够了,而不须要更换主板。其实,主板上的这些暴露在外的插槽,就能够理解为接口。spa
接口就是对外暴露的规则,只要符合规则的CPU、内存,不论品牌、型号、规格,均可以安插使用。code
接口是程序的功能扩展。有了插槽,也就提升了主板的功能扩展性,好比内存不够用了,咱们就能够换成内容最大的内存条,或再加新的内存条。对象
接口下降了耦合性。有了规则,主板和CPU等元件的就分开了,能够分开生了。只要符合规则,元件就能够插入插槽进行使用。这样,主板厂商和CUP厂商之间的联系就少了。blog
2、接口的定义格式继承
class 用于定义类。
interface用于定义接口。接口
接口中常见的定义:常量、抽象方法内存
常量:public static finalio
方法:public abstract class
接口中的成员都是public,并且这些修饰都是能够省略的,只要是interface,系统就会自动补足。
3、接口的特色
接口不能直接建立对象
类与类之间是“继承extends”。(由于父类中有非抽象内容,能够直接拿过来用)
类与接口之间是“实现implements”。(由于接口内的成员都是抽象的,子类要将父类中的成员全都实现后,才可以使用)
接口与接口之间是“继承extends”。
接口能够被类多实现,即一个类能够实现多个类。这是对JAVA不支持多继承的一种转换形式。
interface Inter { public static final int NUM = 3; public abstract void show(); } class Test implements Inter // class是继承(由于父类中有非抽象内容,能够被子类调用) // interface是实现(由于子类要全都将接口中的内容实例化后才能使用) { public void show() { } } public class InterfaceDemo { public static void main(String[] args) { Test t = new Test(); System.out.println(t.NUM); // 对象能够调用成员 System.out.println(Test.NUM); // 类能够调用成员。由于Test实现了Inter,至关于其中也有NUM System.out.println(Inter.NUM); // 接口能够调用成员 } }
多现实
interface Inter { //第一个接口 public static final int NUM = 3; public abstract void show(); } interface InterA { //第二个接口 public abstract void method(); } class Demo { public void myFunction() { } } // 类能够继承类同时实现多个接口,同时继承类。 //由于接口中的方法没有方法主休,因此能够多实现,由子类任意定义。 class Test extends Demo implements Inter, InterA { public void show(){} //复写接口内的全部方法 public void method(){} //复写接口内的全部方法 }
interface Inter { //第一个接口 public static final int NUM = 3; public abstract void show(); } interface InterA { //第二个接口 public abstract void show(); } class Test extends Demo implements Inter, InterA { public void show(){} //两个接口内的方法同名时,实现多接口时只要复写一次便可 }
接口之间是继承
interface A { //A有一个方法 void methodA(); } interface B extends A { //B有两个方法 void methodB(); } interface C extends B { //C有三个方法 void methodC(); } class D implements C{ //接口A继承B,B函数C,类D实现接口C,D中要复写3个方法 public void methodA(){} public void methodB(){} public void methodC(){} }
interface A { //A有一个方法 void methodA(); } interface B { //B有一个方法 void methodB(); } interface C extends A、B { //C有继承A、B void methodC(); }