java学习之路之接口(1)
接口的定义:
如果一个类之中只是抽象方法和全局常量所组成,那么在这种情况下,不会将其定义一个抽象类,而只会将其定义成接口,所谓的接口严格来讲就属于一种特殊的类,而且这个类里面只有抽象方法和全局常量,连构造方法都没有。
要定义一个接口使用interface关键字完成。
范例:
interface A{//定义了一个接口
public static final String Msg = "hello"; //全局常量
public void print();
}
使用规则:
· 接口必须要有子类,但是此类可以使用implements关键字实现多个接口。
· 接口的子类如果不是抽象的,必须覆写接口中的全部抽象方法。
· 接口的对象可以利用子类的对象向上转型进行实例化操作。
看一个范例:
interface A{ //实现A接口
public void printA();
}
interface B{//实现B接口
public void printB();
}
abstract class C{//实现C抽象方法
abstract void printC();
}
class X extends C implements A,B{//先继承抽象方法,后使用接口。
//抽象方法的覆写。
public void printA(){
System.out.println("A");
}
public void printB(){
System.out.println("B");
}
public void printC(){
System.out.println("C");
}
}
public class Demo1 {
public static void main(String[] args) {
X x = new X();
x.printA();
x.printB();
x.printC();
}
}
· 接口里面没有写上public ,最终的访问权限就是 public, 而不是default, 但是最好还是加上public。
· 一个抽象类可以继承一个抽象类,但是一个借口可以使用extends继承多个接口(但是接口不能继承抽象类)。
接口继承范例:
interface A{ //实现A接口
public void printA();
}
interface B{//实现B接口
public void printB();
}
interface C extends A,B{
public void printC();
}
在整个java里面,接口的主要功能就是解决单继承局限问题。
内部接口范例:
interface A{ //实现A接口
public void printA();
abstract class B{ //接口A内部的抽象类B
public abstract void printB();
}
}
class C implements A{ //C实现了A接口
public void printA(){
System.out.println("hello world!");
}
class X extends B{ // 内部抽象类的子类
public void printB() {}
}
}
外部接口范例:
使用static修饰的接口。
interface A{ //实现A接口
public void printA();
static interface B{ // 外部接口
public void printB();
}
}
class C implements A.B{
public void printB(){}
}
-----Over