转自:https://blog.csdn.net/qq_33518744/article/details/52673782
接口声明:interface 接口名字
接口体:接口体中包含
常量的声明(没有变量)和
抽象方法两部分。
常量是public, static,final型常量,方法是public,abstract方法。
如
3.接口细节说明
com = object;即将实现接口的类的实例对象的引用赋值给接口变量。
- interface Printable{
- public final static int Max = 100; //等价写法:int Max = 100;
- public abstract void add(); //等价写法:void add()
- }
实现接口:
1.类实现接口:接口由类来实现以便使用接口中的方法。
class A implements Printable, Addable //A类实现Printable, Addable接口。
2.重写接口的方法:如果一个非抽象类实现了某个接口,那么这个类必须重写这个接口中的所有方法。且一定要用public修饰(否则降低了方法的访问权限)
如果一个类声明实现了一个接口,但没有重写接口中的所有方法,那么这个类必须是抽象类,也就是说抽象类既可以重写接口的方法也可以直接拥有接口的方法,如:
- interface Computable{
- final int MAX =100;
- void speak(String s);
- int f(int x);
- float g(float x, float y);
- }
- abstract class A implements Computable{
- public int f(int x)
- {
- int sum = 0;
- return sum;
- }
- }
程序可以用接口名访问接口中的常量,但是如果一个类实现了接口,那么该类可以直接在雷蹄中使用该接口中的常量。
如果父类实现了某个接口,那么子类也就自然实现了该接口。
接口也可以被继承,优于接口中的常量和抽象方法都是public的,子接口将继承父接口中的全部方法和常量。
接口回调:
com = object;即将实现接口的类的实例对象的引用赋值给接口变量。
接口回调非常类似上转型对象调用子类重写的方法。
接口与多态:不同的类在实现同一个接口时可能具有不同的实现方式,那么接口变量在回调接口方法时就可能具有多种形态。
接口参数:将接口的类的实例的引用传递给该接口参数,那么该参数就可以回调类实现的接口方法。
abstract类和接口类的比较:
1.abstract类和接口都可以有abstract方法。
2.接口中只可以有常量,不能有变量;而abstract类中既可以有常量又可以有变量。
3.abstract类中也可以由非abstract方法,接口不可以。