一.使用方法
一个接口不能继承其他的类,但是可以继承别的接口
一个类可以继承多个接口
接口中不能有变量,也就是不能出现int x
,但是可以出现int x = 10
二.例子
interface GrandPa
{
void show(); // 等价于 public abstract void show()
}
interface GrandMa extends GrandPa // 一个接口可以继承另一个接口
{
void speak();
}
interface Mather
{
void talk();
}
class Father{
}
class Son extends Father implements GrandMa, Mather // 一个类可以继承多个接口
{
public void show()
{
System.out.println("Son_GrandPA");
}
public void speak()
{
System.out.println("Son_GrandMa");
}
public void talk()
{
System.out.println("Son_Mother");
}
}
public class test
{
public static void main(String args[])
{
Son s = new Son();
s.show();
s.speak();
}
}
在类实现接口的方法时,必须要加关键字public
在继承接口的类中,必须要实现接口中所有的方法,不然这个类必须是抽象类
也就是抽象类可以重写接口中的方法,也可以直接拥有接口中的方法
三. 接口的实例化
接口是可以实例化一个对象的
和之前的抽象类不一样
interface ShowMessage
{
void showname(String s);
}
class TV implements ShowMessage
{
public void showname(String s)
{
System.out.println(s);
}
}
class PC implements ShowMessage
{
public void showname(String s)
{
System.out.println(s);
}
}
public class test
{
public static void main(String args[])
{
ShowMessage sm; // 声明接口变量
// 声明TV对象
sm = new TV();
sm.showname("佳能感动常在"); // 接口回调
sm = new PC();
sm.showname("DELL");
}
}
这里的使用方法和之前的上转型对象很类似
三.接口作为参数
interface SpeakHello // 接口
{
void speakhello();
}
class Chinese implements SpeakHello // 中国人
{
public void speakhello()
{
System.out.println("宁吃了吗?");
}
}
class English implements SpeakHello // 英国人
{
public void speakhello()
{
System.out.println("天气不错");
}
}
class KindHello
{
public void lookhello(SpeakHello sh) // 将接口作为参数传入
{
sh.speakhello(); // 接口回调
}
}
public class test
{
public static void main(String args[])
{
KindHello kh = new KindHello();
kh.lookhello(new Chinese()); // 等价于将 SpeakHello sp = new Chinese() 中的sp传入
kh.lookhello(new English());
}
}
这个和传入一个对象作为参数差不多