1.接口概述
不同类间不含有继承关系,但共有相似的属性、方法,我们可以通过接口来实现它们
(1)接口的使用
1)定义:interface
2)调用:implements
(2)特点:
1)接口不能实例化,只能由类来实现,或被其他接口继承,支持多继承,用逗号连接
2)类可以继承多个接口,通过逗号连接
//接口的定义
//(括号内表示默认属性,可以在声明时不写)
//属性:(public、static、final、)有初始值(表常量记得大写)
//方法:(public、abstract)(方法参数列表)
public interface text extends Interface1,Interface2,Interface3{
int I=10;
public static final J=12;
void feed();
public abstract void PlayWith(int k);
}
public class TextClass implements interface1,interface2{
//此处需要将接口中声明的方法重写
}
(3)接口与抽象类的区别
1)接口是特殊的抽象类
2)接口可以多重实现、多重继承,子类只能单继承抽象父类
3)接口中无构造方法;抽象类可以有构造方法,通过子类来实现
4)抽象类继承,如果子类也是一个抽象类,并不要求一定重写父类方法。如果子类不是抽象类,则要求子类一定要实现父类中的抽象方法。
接口类可以继承接口,接口不能实例化。如果是一个子接口,可以扩展父接口的方法;如果是一个子抽象类,可以部分或全部实现抽象父类的方法;如果子类不是抽象类,则要求子类一定要实现父接口中定义的所有方法。
2.代码实例
//@author:林寒_
//定义接口MediaPlayer,含有三个抽象方法
public interface MediaPlayer{
//播放
void play();
//暂停
void stop();
//开柜
void open();
}
public class DVDPlayer implements MediaPlayer{
public void play(){
System.out.println("我是DVDPlayer-play()");
}
public void stop(){
System.out.println("我是DVDPlayer-stop()");
}
public void open(){
System.out.println("我是DVDPlayer-open()");
}
}
public class CDPlayer implements MediaPlayer{
public void play(){
System.out.println("我是CDPlayer-play()");
}
public void stop(){
System.out.println("我是CDPlayer-stop()");
}
public void open(){
System.out.println("我是CDPlayer-open()");
}
}
public class TapePlayer implements MediaPlayer{
public void play(){
System.out.println("我是TapePlayer-play()");
}
public void stop(){
System.out.println("我是TapePlayer-stop()");
}
public void open(){
System.out.println("我是TapePlayer-open()");
}
}
//遥控器类,用于调用三个Player对象的三个方法
class Controller{
//定义整形变量index_i,用于计数数组players下标,初始值为零
int index_i=0;
//定义一个私有的、实现MediaPlayer接口的对象数组players
private MediaPlayer[] players;
//构造方法给players数组初始化,若不初始化在将对象元素存入数组时将会出现下标越界异常
public Controller(){
players=new MediaPlayer[3];
}
//向players数组存入对象的方法setPlayers,在参数列表处传入对象并存入数组,将下标计数器自加一
public void setPlayers(MediaPlayer m) {
players[index_i]=m;
index_i++;
}
//定义属于遥控器的三种方法,根据传入参数的数值,调用数组中对应位置的对象,并使用其对应方法
public void play(int i){
players[i].play();
}
public void stop(int i){
players[i].stop();
}
public void open(int i){
players[i].open();
}
public static void main (String[] args) {
//创建三个Player对象
DVDPlayer d=new DVDPlayer();
CDPlayer c=new CDPlayer();
TapePlayer t=new TapePlayer();
//创建类的实例对象con
Controller con=new Controller();
//调用setPlayers()将刚刚创建的三个Player对象存入player数组
con.setPlayers(d);
con.setPlayers(c);
con.setPlayers(t);
//调用遥控器的三个方法,并传入相应参数来指定相应的对象执行操作
con.play(0);
con.stop(1);
con.open(2);
}
}
// 输出结果
我是DVDPlayer-play()
我是CDPlayer-stop()
我是TapePlayer-open()