欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java—接口

程序员文章站 2022-06-13 21:33:59
...

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());
    }
}
相关标签: java