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());
}
}