接口Implements

implements

定义时的格式为interface 接口名
(一般在接口名的开头加一个大写的I)

//定义一个接口
public interface ClassName {
    String getClassName();//抽象方法
}
interface在编译后也为class文件,所以它也是类
  1. 接口可以看作是抽象方法的集合,大部分情况下接口中所有的方法都是抽象方法(即接口中的方法没有{ }),但接口中可以存在default,static修饰的方法或成员属性
interface USB{   //创建一个接口
    static void Charge() {   //static
        System.out.println("充电");
    }
    default void Transfer(){    //default
        System.out.println("传输数据");
    }
}

public class MyUSB implements USB{
    public static void main(String[] args) {
        USB myusb = new MyUSB();
        USB.Charge();//static关键字属于类,而不是类的实例。
        myusb.Transfer();
    }
}
  1. 接口没有构造方法,也不能实例化对象.因为接口中的方法都是抽象的,是没有方法体的
  2. 接口中只能定义常量。不能定义其他成员变量
  3. 接口中的方法可以省略public abstract,系统会默认使用,省略可以减少代码的冗余

被调用的格式为public 子类 implements 接口1,接口2,······;

//定义一个接口
public interface ClassName {
    String getClassName();
}

//实现获取当前的类名
class Company implements ClassName {
    @Override
    public String getClassName() {
        return this.getClass().getName();
        /*
        getClass获取当前对象的类名
        getName以String形式返回名称
         */
    }
}
class Test{
    public static void main(String[] args) {
        Company com = new Company();
        System.out.println("类名="+com.getClassName());
    }
}
  1. 接口不会被类继承(extends),而是被类实现,使用implements),实现类实现接口的时候,一定要加上public访问权限修饰符
  2. 一个类可以同时继承多个接口(与继承不同的一点),且接口之间是可以继承的,而且可以多继承
  3. 一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类(通过这种强迫重写使得该类带上某种特征)
  • 接口属于引用类型
  • 接口具有解耦合的作用,所以大部分情况下只有abstract来作为一种规范,而非实现
interface IOpen {
    //遥控器可以打开电视
    void open();
}

interface ITV {
    //电视可以播放
    void Play();
}

public class Remote implements IOpen {
    //创建对象方便open方法中调用方法
    private ITV tv;

    public void setTV(ITV tv) {
        this.tv = tv;
    }

    @Override
    public void open(){
        tv.Play();
    }
}

class Mi implements ITV {
    @Override
    public void Play() {
        System.out.println("小米电视播放");
    }
}

class Vidda implements ITV {
    @Override
    public void Play() {
        System.out.println("海信电视播放");
    }
}

class WatchTV {
    public static void main(String[] args) {
        Remote remote = new Remote();

        //只需要用对应的遥控器即可打开电视
        Mi mi = new Mi();
        remote.setTV(mi);
        remote.open();

        Vidda vidda = new Vidda();
        remote.setTV(vidda);
        remote.open();
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值