java类只支持单继承,使用接口实现多继承
如果现在一个类之中的基本结构就是抽象方法与全局常量,这样的类一般都利用接口的概念进行表示,在 java 之中接口使用 interface 关键字进行定义,而接口之中的组成只有抽象方法与全局常量。
代码块
范例:定义接口
interface A {
// 定义了一个接口
// 全局常量
public static final String INFO = “HELLO WORLD” ;
public abstract void fun() ; // 抽象方法
}
接口定义完成之后如果要使用接口,那么必须为接口定义子类,并且子类(如果不是抽象类)则要
求覆写接口之中的全部抽象方法。而且子类使用implements 关键字来实现接口,最为关键的是,一个子
类可以同时实现多个接口。
当子类定义完成之后,下面就可以利用子类对象的向上转型操作,为接口对象实例化。
interface A
{
public static String INFO =”hello”;//定义全局常量
public abstract void fun();
}
interface B
{
public abstract void get();
}
class X implements A,B
{
public void fun()
{
System.out.println(“A接口方法”);
}
public void get()
{
System.out.println(“B接口方法”);
}
}
public class TestDemo
{
public static void main(String args[])
{
A a=new X();
B b=new X();
a.fun();
b.get();
}
}
两个重点说明:
· 在接口之中所定义的全部方法永恒都是 public,即:写与不写都是 public
· 在接口之中即使简写代码,也和完整编写是同样的功能。
但是从开发的习惯上来讲,对于抽象方法可以忽略 abstract,但是千万不要忽略 public。
接口中的抽象方法可以省略abstract,但是抽象类中的抽象方法不能省去abstract.
代码块
interface A { // 定义了一个接口
// 全局常量
public static final String INFO = “HELLO
WORLD” ;
public abstract void fun() ; // 抽象方法
}
和,
interface A { // 定义了一个接口
// 全局常量
String INFO = “HELLO WORLD” ;
void fun() ; // 抽象方法
}
效果一样。
代码块
interface A
{
public static String INFO =”hello”;
public abstract void fun();
}
interface B
{
public abstract void get();
}
abstract class C
{
public abstract void set();
}
class X extends C implements A,B
{
public void fun()
{
System.out.println(“A接口方法”);
}
public void get()
{
System.out.println(“B接口方法”);
}
public void set()
{
System.out.println(“C抽象类方法”);
}
}
public class TestDemo
{
public static void main(String args[])
{
A a=new X();
B b=new X();
C c=new X();
a.fun();
b.get();
c.set();
}
}
output:
A接口方法
B接口方法
C接口方法
最后附图一张: