1、概念:接口是抽象方法和常量值得定义的集合。本质上,接口是一种特殊的抽象类,这种抽象类只包含常量和方法的定义,而没有变量和方法的实现。
接口定义举例:
2、接口特性:
(1)接口可以多重实现;(接口可以继承接口,类可以实现接口,类可以继承类)
(2)接口中声明的属性(成员变量)默认是public static final的,也只能是public static final的;
这是为了修正C++中多继承容易出现问题(重复的成员变量)。
(3)接口中只能定义抽象方法,而且这些方法默认是public的,也只能是public的;
接口中的方法不用加abstruct,默认就是抽象方法,而且只能是抽象方法。
(4)接口可以继承其他的接口,并添加新的属性和抽象方法。
3、 (1)多个无关的类可以实现同一个接口,一个类可以实现多个无关的接口;
(2)与继承关系类似,接口与实现类之间存在多态性;
4、定义Java类的语法格式:
5、补充:实现Comparable接口(该接口只有一个compareTo方法),重写compareTo方法。写一个排序方法,能够比较所有类型的对象。
6、接口举例
例1:
public class TestInterface{ public static void main(String args[]){ Singer s1=new Student("le");//此处并非实例化接口,接口与抽象类一样是不可以实例化的 s1.sing();//student is singing s1.sleep();//student is sleeping Singer s2=new Teacher("steven"); s2.sing();//teacher is singing s2.sleep();//teacher is sleeping Painter p1=(Painter) s2; p1.paint();//teacher is painting p1.eat();//teacher is eating } } interface Singer{ public void sing(); public void sleep(); } interface Painter{ public void paint(); public void eat(); } class Student implements Singer{ private String name; Student(String name){ this.name=name; } public String getName(){ return name; } public void study(){ System.out.println("studying"); } public void sing(){ System.out.println("student is singing"); } public void sleep(){ System.out.println("student is sleeping"); } } class Teacher implements Singer,Painter{ private String name; Teacher(String name){ this.name=name; } public String getName(){ return name; } public void teach(){ System.out.println("teaching"); } public void sing(){ System.out.println("teacher is singing"); } public void sleep(){ System.out.println("teacher is sleeping"); } public void paint(){ System.out.println("teacher is painting"); } public void eat(){ System.out.println("teacher is eating"); } }
内存分析:对象中的“指向方法的指针”可以动态地根据指向该对象的引用类型调整所指向的方法。
例2: