博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
接口Interface
阅读量:4676 次
发布时间:2019-06-09

本文共 2195 字,大约阅读时间需要 7 分钟。

接口的语法(一)

1.使用interface定义;

2.可以理解为一个比较纯粹的,因为接口中的方法都是抽象方法(无需用abstract,默认就是抽象方法);

3.接口中所有方法的权限都是public。

USB.java

interface USB{    public void read();//抽象方法的定义,没有函数体;写不写public无所谓,默认public    void write();      }

USBPhone.java

接口的实现类负责来实现接口的抽象方法。实现是一种特殊的继承。实现也可以得到接口里的成员变量成员方法。

class Phone implements USB{    public void read()    {        System.out.println("Phone read");    }    public void write()    {        System.out.println("Phone write"):    }}

Test.java

实现是特殊的继承,所以USBPhone是子类,USB是父类,向上转型依然成立。

class Test{    public static void main(String args[])    {        Phone phone = new Phone();        USB usb = phone ;//向上转型        usb.read();//此时调用的是子类usbphone覆写过的read方法,具体见         usb.write();    }}

编译运行Test后,打印出的是:

Phone read 

Phone write

这是接口最基本的语法。

 

接口的语法(二)

1.实现接口使用implements关键字;

2.一个类可以实现多个接口(实现是特殊的继承,也就是一个类可以继承多个接口,JAVA中类只支持单继承,也就是一个类只能有一个父类);

3.一个接口可以继承多个接口。

对于2:

新建接口Wifi.java

interface Wifi{    public void open();    public void close();}

这时候把之前的Phone类修改一下,既支持USB又支持Wifi:

class Phone implements USB,Wifi{    public void read()    {        System.out.println("Phone read");    }    public void write()    {        System.out.println("Phone write"):    }//同样,要覆写Wifi中的open和close方法  public void open()    {        System.out.println(open);    }    public void close()    {        Syetem.out.println(close);    }}

这个时候Test.java中向上转型可以有两种选择:

class Test{    public static void main(String args[])    {        Phone phone = new Phone();        USB usb = phone ;//向上转型        usb.read();//此时调用的是子类usbphone覆写过的read方法,具体见 对象的转型        usb.write();                Wifi wifi = phone;//此时既可以向上转型为USB,又可以向上转型为Wifi        wifi.open();        wifi.close();    }}

这时的Test打印:

Phone read 

Phone write

open

close

 

对于3.一个接口可以继承多个接口:

新建A.java B.java C.java

A.java中:

interface A{    public void funA();}

B.java中:

interface B{    public void funB();}

C.java中:

interface C extends A,B//注意这里是extends而不是implments,要“实现”A和B就必须去覆写A和B中的抽象方法,这样一来C就不可能是接口,因为接口里都是抽象方法(不能有函数体){    public void fucC();}

此时C里有三个方法。当要用一个类来实现C,必须覆写三个方法。这就是一个接口可以继承多个接口的含义。

 

(end)

注:这篇随笔是在看Mars老师的Java4Android的视频的时候做的笔记,如果存在版权那么归于Mars老师。其他一些笔记的内容也有部分是出自Mars老师的视频,就不一一声明了。在这里谢谢Mars老师。

转载于:https://www.cnblogs.com/larrylawrence/p/3397526.html

你可能感兴趣的文章
Illustrator 上色
查看>>
truncate表恢复
查看>>
this关键字的使用
查看>>
Console.Read()、Console.ReadLine()、Console.ReadKey()
查看>>
ecere 编译过程中遇到的问题
查看>>
Cyclone V 与 Avalon-MM资料整理——DE1-SOC学习笔记(1)
查看>>
异常:This application has no explicit mapping for /error, so you are seeing this as a fallback.
查看>>
Flask-SQLAlchemy
查看>>
C# - Generics
查看>>
.NET LINQ 转换数据类型
查看>>
[LGP2791] 幼儿园篮球题
查看>>
170. Two Sum III - Data structure design
查看>>
os & sys
查看>>
Shell 常用命令总结
查看>>
vector
查看>>
用分布式缓存提升ASP.NET Core性能
查看>>
《数据结构》相关题目
查看>>
Codeforces Round #431 (Div. 2) A 水 B 暴力模拟 C 思维
查看>>
php-fpm 进程管理
查看>>
[linux-内核][转]内核日志及printk结构浅析
查看>>