Java—接口

Java—接口

#####定义 : 接口就是 全局常量和抽象方法的集合 用 interface 关键字定义

在一个操作既可以使用接口又可以使用抽象类的时候 ,优先考虑使用接口

接口可以实现java的多继承

子类如果想要实现接口的话,用implements关键字来实现接口, 一个子类可以实现多个接口

对于非抽象子类 ,必须覆写所有的接口方法 。 用向上转型来实现接口

另外如果接口有共同的子类,就可以实现父接口的相互转化

1.接口命名规则 ,在接口名 加上大写字母I

子类命名 , 在子类名后加上后缀Impl;

eg.1

 interface IMessage{//1.在所有接口名前加上I
    String MSG="java";
    void print();
}
interface INews{
     String getNews();
}
class MessageImpl implements IMessage,INews{//子类命名规则,后缀加上Impl,表示存接口继承过来的
    public void print(){
        System.out.println(MSG);
    }
    public String getNews(){
        return IMessage.MSG;//建议加上接口名称
    }
}
public class Day19_2{
    public static void main(String[] args){
        IMessage m=new MessageImpl();
        m.print();
        //m.getNews();  //这时不能用  因为getNews是属于INews接口的而引用类型确是IMessage接口垫
        INews n= (INews) m;  //父类接口的相互转化   (前提是有共同子类的时候)
        System.out.println(n.getNews());
    }
}

接口的使用限制(原则)

1.接口中只能有public访问权限 (接口本身也是public 但是省略了)

​ public可以省略 但是在接口中 即使省略了还是public权限而不是default权限

​ 其中 全局常量和抽象方法的定义通常为

interface A {
    public static final String MSG="god";//全局常量
     public abstract void play();//抽象方法
}

​ 在接口中 public static final abstract都可以省略 代码可以简化成如下所示

interface A {
     String MSG="god";//全局常量
     void play();//抽象方法
}

​ 通常为了代码的简约 通常采用下面的方法

2.一个子类如果要同时继承一个抽象类和实现一个接口 那么先继承抽象类,后实现接口
因为,抽象类是单继承 ,接口是多实现
interface A{
}
abstract B{
}
class Test extends B implements A{}//先继承,后实现
3.抽象类可以实现接口,但是接口不能继承抽象类

​ 因为抽象类中可能会有一些普通方法,如果这样做了违背原则;

interface A{
   
}
abstract B implements A{

}
class Test extends B implements A{}//这里的A只是说明他是从哪个接口来的而已  
4.接口可以继承多个父接口
interface A{
}
interface B{
}
interface C{
}
interface D extends A,B,C{}
5.接口里可以定义一系列内部结构, (普通内部类,内部接口)。其中,使用是他吐出定义的内部类就相当于一个外部接口

接口的应用

我们可以用USB接口来举例

首先定义一个USB标准(接口) ,

所有外部设备要连接到电脑上都必须去实现这个接口

电脑用USB接口的要求去使用USB设备

interface USB{//定义一个USB接口
    void setUp();//定义一个抽象安装方法
    void work();//定义一个抽象的工作方法
}
class UDisk implements USB{//UDisk实现USB接口的方法
    public void setUp(){
        System.out.println("安装U盘");
    }
    public void work(){
        System.out.println("U盘工作");
    }
}
class Computer{//电脑按照USB接口的方法工作
    public void plugIn(USB usb){
        usb.setUp();
        usb.work();
    }
}
public class Day20{
    public static void main(String[] args){
        Computer computer= new Computer();
        computer.plugIn(new UDisk());
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值