【Java】接口

【Java】接口

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=12void 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()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值