目录
基本知识
接口的概念
接口的语法
接口的拓展
接口的应用
谢谢大家的观看!!!
基本知识
接口的概念
接口就是公共的行为规范标准,大家在实现时,只要符合规范标准,就可以通用。
在Java中,接口可以看成是:多个类的公共规范,是一种引用数据类型。
接口的语法
1.接口的定义:权限 + interface + 接口名
eg: public interface Ishape (接口名最好是用大写字母i打头)
2.接口底下不能写构造方法
3.接口中的成员默认是public static final,不写也没有关系
4.接口中的方法不写默认是public abstract
5.接口不能被实例化
6.接口要通过类来实现
public class + 类名称 + implements
7.接口中的方法不能有具体实现
如果非要有实现也不是不行 ,加default或者static
接口的拓展
接口c既有原来自己的功能(funcc),也能用接口A,接口B的功能
接口的应用
1.先建立一个USB的接口,里面有两个方法,打开和关闭
2.建立一个鼠标类,用implement去连接IUSB接口
tips:怎 么 快 速 写 重 写 方 法
先 用 鼠 标 点 击 红 色 的 线,然 后 在 按 alt+回 车,就 会 出 现 重 写 方 法 啦
3.用同样的方法再建立一个键盘类,方法同上
4. 再建立一个电脑类,方法有打开和关闭,我们试图通过电脑类来使其他的设备也能连接IUSB接口
如果这里接收到的是鼠标,就是鼠标在用这个接口,如果接受到的是键盘,那就是键盘在用这个接口,这里用了向下转型通过 instanceof 找到鼠标类,如果直接用usb去用鼠标类的方法click的是不行的,因为IUSB里面没有click这个方法,在鼠标类里面才有,所以这里要 类型强转 ,将usb强转为鼠标类,再去用click方法 ,下面的同理
5.最后再调用computer类,运行起来
运行结果如下
如果上面这个例子没很明白的话,这是我的问题,可能有点抽象,那我们再来看一个例子吧
1.先定义一个动物类,并给上构造方法
2.定义一个IRunning接口
这里先是继承Animal类,再用implements 和接口连接上,里面先调用父类的构造方法,再重写接口的run方法
3.用同样的方式去完成🕊Bird,🐟Fish类吧
4.我们能不能把之前的接口都用上?当然可以!!!建立一个鸭子类,鸭子又会跑又会飞又会游,直接在implement后面多加几个接口就可以了,然后依次进方法重写
5.方法调试,运行起来
这时候可能会想,那🦆鸭子类怎么办呢
怎么办? 好办!
和前面的其他动物一样,这里是为了区分,才加的1和2
我们一起来看一下结果吧
这里我们可以感受到,接口就是一种功能,我们就算不是动物也能用比如建立一个pen类
结果如下
以 上 我 们 发 现 就 算 不 是 动 物 也 能 用 我 们 的 跑 步 的 接 口 ,所 以 我 们 的 接 口 是 撇 开 了 类 型 的,只 要 满 足 这 个 功 能 就 可 以
abstract class Animal{ public String name;
//构造方法赋初值
public Animal(String name) {
this.name = name;
}
}
interface IRunning{
void run();
}
interface ISwimming{
void swim();
}
interface IFly{
void fly();
}
class Dog extends Animal implements IRunning{
public Dog(String name) {
super(name);
}
@Override
public void run() {
System.out.println(name +"用两条狗腿腿在跑");
}
}
class Fish extends Animal implements ISwimming{
public Fish(String name) {
super(name);
}
@Override
public void swim() {
System.out.println(name+"用两条腿在游");
}
}
class Bird extends Animal implements IFly{
public Bird(String name) {
super(name);
}
@Override
public void fly() {
System.out.println(name+"用翅膀飞");
}
}
class Duck extends Animal implements IRunning,IFly,ISwimming{
public Duck(String name) {
super(name);
}
@Override
public void run() {
System.out.println(name+"用两条腿在跑");
}
@Override
public void swim() {
System.out.println(name+"用两条腿在游");
}
@Override
public void fly() {
System.out.println(name+"用翅膀飞");
}
}
class pen implements IRunning{
@Override
public void run() {
System.out.println("我也能跑,没想到吧!");
}
}
public class test {
//用接口去调用
public static void fly(IFly iFly){
iFly.fly();
}
public static void swim(ISwimming iSwimming){
iSwimming.swim();
}
public static void walk(IRunning iRunning){
iRunning.run();
}
public static void main(String[] args) {
walk(new pen());
walk(new Dog("二蛋"));
swim(new Fish("小鱼儿"));
fly(new Bird("雷霆战鸡"));
System.out.println("=======");
walk(new Duck("小鸭1"));
swim(new Duck("小鸭2"));
}
}