接口里面的方法都是public abstract 类型的。
接口里面的属性都是public static final类型的(必须初始化)。
接口可以实现,也可以继承。
接口可以支持多重继承。
一个类可以实现多个接口,一个接口也可以被多个类实现.
接口描述了事物的功能,即xxx has a xxx.
exam:
手机有智能手机和以前的老年手机,都有打电话和发短信的功能.
而智能手机可以拍照,上网,玩游戏。
则可以将手机设计为抽象类,智能手机和普通手机设计为其子类,
将拍照,玩游戏,上网的功能设计为接口。
//手机抽象类
public abstract class Mobile {
public abstract void phone();
public abstract void send(String msg);
}
//上网功能的接口
public interface Internet {
public void internet(); //上网
}
//玩游戏功能的接口
public interface Game {
public void playGame();
}
//拍照功能的接口
public interface Camera {
public abstract void camera();
}
//智能手机类
public class SmartMobile extends Mobile implements Internet,Camera,Game{
private String brand; //品牌
public SmartMobile(String brand)
{
this.brand = brand;
}
@Override
public void playGame() {
// TODO Auto-generated method stub
System.out.println(this.brand+"牌手机正在玩游戏...");
}
@Override
public void camera() {
// TODO Auto-generated method stub
System.out.println(this.brand+"牌手机正在拍照...");
}
@Override
public void internet() {
// TODO Auto-generated method stub
System.out.println(this.brand+"牌手机正在上网...");
}
@Override
public void phone() {
// TODO Auto-generated method stub
System.out.println(this.brand+"牌手机正在通话...");
}
@Override
public void send(String msg) {
// TODO Auto-generated method stub
System.out.println(this.brand+"牌手机正在发短信:"+msg);
}
}
//测试类
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
SmartMobile m = new SmartMobile("iPhone6");
m.send("吃了吗?");
m.playGame();
}
}
运行结果:
------来自一个热爱学习的新手