接口
1. 接口
1.1 接口使用骚操作
1. 接口可以通过extends关键字,继承其他接口
相当于电子设备的协议兼容 USB3.1 ==> USB3
2.存在继承联系的接口,如果出现了相同的方法,实现类继承当前接口时,只需要完成一个。
相当于电子设备的协议相同。 Type-C接口
3.接口中可以使用default关键字来描述默认方法。当前默认方法可以有方法体,实现类非强制要求完成。 JDK1.8特征
interface A {
void test();
}
interface B {
void test();
}
interface C extends A, B {
void test();
}
class TypeA implements C {
@Override
public void test() {
System.out.println("不同接口之间存在相同方法,如果一个类遵从这些接口,完成一次相同方法即可");
}
}
public class Demo1 {
}
2. 多态
2.1 动物园
第一个问题:
请问动物能不能看做是一个类? 可以
第二个问题:
熊猫,老虎,猴子请问能不能各自看作是一个类? 可以
第三个问题:
熊猫,老虎,猴子 请问是不是动物? 是
package com.qfedu.b;
class Animal {
}
class Panda extends Animal {
}
class Tiger extends Animal {
}
class CodingMonkey extends Animal {
}
public class Demo1 {
public static void main(String[] args) {
Animal animal = new Animal();
Panda panda = new Panda();
Tiger tiger = new Tiger();
CodingMonkey codingMonkey = new CodingMonkey();
feedAnimal(animal);
feedAnimal(panda);
feedAnimal(tiger);
feedAnimal(codingMonkey);
System.out.println();
CodingMonkey codingMonkey2 = (CodingMonkey) getAimal();
System.out.println(codingMonkey2.getClass());
}
public static void feedAnimal(Animal animal) {
System.out.println(animal.getClass() + "来吃饭了");
}
public static Animal getAimal() {
return new CodingMonkey();
}
}
2.2 USB接口
USB是一个接口
interface USB {
void connect();
}
键盘,鼠标这里需要遵从USB接口,也就是USB设备
package com.qfedu.b;
interface USB {
void connect();
}
class Keyboard implements USB {
@Override
public void connect() {
System.out.println("键盘敲烂,月薪过万");
}
}
class Filco extends Keyboard {
@Override
public void connect() {
System.out.println("Filco 茶轴");
}
}
class Mouse implements USB {
@Override
public void connect() {
System.out.println("鼠标拖费,王者必跪");
}
}
class Logi extends Mouse {
@Override
public void connect() {
System.out.println("罗技 G502");
}
}
class PC {
public void useUsbInterface(USB usb) {
usb.connect();
}
}
public class Demo2 {
public static void main(String[] args) {
Keyboard keyboard = new Keyboard();
Mouse mouse = new Mouse();
PC pc = new PC();
pc.useUsbInterface(keyboard);
pc.useUsbInterface(mouse);
pc.useUsbInterface(new Filco());
pc.useUsbInterface(new Logi());
}
}
2.3 多态总结
父类的引用指向子类的对象
接口的引用指向遵从接口的实现类对象
这就是多态!!!
多态作用:
1. 拓宽方法的参数范围!!!【常用】
参数类型要求是父类,这里传入父类对象或者其子类对象,都可以满足方法要求
参数类型要求是接口,这里传入直接或者间接的接口实现类对象,也是OK的
2. 拓宽方法的返回值范围!!!【常用】
返回值类型是父类对象,这里实际返回数据时父类对象或者其子类对象,OK!!!
返回值类型是接口类型,这里实际返回数据时直接或者间接实现类对象,都可
以!!