接口:
可视为一种特殊的类,其结构和抽象类相似,是抽象类的一种变体。接口内定义的所有方法,都默认为abstract,即抽象方法,在Java8 以后,接口的内部允许包括数据成员,但这些数据必须是常量,一旦被初始化后是无法更改的。
接口必须有子类,子类靠implements关键字同时实现多个接口。
一个类实现多个接口时,若接口中有默认方法,不能出现同名方法。
重点!!
interface faceA
{//定义一个接口
String INFO ="Hello Frank!"; //等同于public static final String INFO = "Hello Frank!";
void print();//抽象方法
}
interface faceB
{//定义一个接口
public abstract void get();
}
interface faceC//带有默认方法体的接口
{
default public void defaultMethod()
{
System.out.println("这是默认方法");
};
}
abstract class abstractC
{//定义一个抽象类
public abstract void fun();
}
class subclass extends abstractC implements faceA,faceB,faceC //一个子类同时实现了两个接口
{//先继承后实现
public void print()
{
System.out.println(INFO);
}
public void get()
{
System.out.println("您好,");
}
public void fun()
{
System.out.println("您好,Frank");
}
public void defaultMethod(){
System.out.println("这是默认方法");
};
}
public class ExtendsInterface {
public static void main(String []args)
{
subclass subObj = new subclass();//实例化子类对象
subObj.defaultMethod();
subObj.print();
subObj.get();
subObj.fun();
//此处提供另外一种实现方式
/**faceA fa = subObj;//为父类接口实例化
faceB fb = subObj;//为发了接口实例化
abstractC ac =subObj;//实现接口的实例化
subObj.defaultMethod();
subObj.print();
fb.get();
ac.fun();*/
}
}
此代码中包含了大部分关于接口的操作。