Interfaz, polimorfismo
1. Interfaz
1.1 Interfaces en la vida
生活中接口
USB Type-C RJ45 雷电协议口(USB-C) 3.5MM HDMI 国标插座 VGA DP
这些接口有什么作用???
USB接口为例
充电,U盘,移动硬盘,麦克风,网卡,声卡,键盘,鼠标
给予当前电脑其他的拓展功能
当前连接的所有设备,都需要符合USB接口协议
固定内容:
尺寸,接触引脚个数
不固定
通过USB接口完成的拓宽内容。
USB接口制定连接操作过程,同时要求USB设备完成对应规范。【驱动安装】
【插件式编程方式】
1.2 Formato de interfaz
关键字:
interface 接口 UI User Interface
implements 【遵从】
格式:
定义接口格式
interface A {
成员变量
成员方法
}
遵从接口:
class B implements A {
}
interface A {
int num = 10 ;
void test ( ) ;
}
class TypeA implements A {
@Override
public void test ( ) {
System. out. println ( "TypeA类遵从接口A实现test方法" ) ;
}
}
public class Demo1 {
public static void main ( String[ ] args) {
TypeA typeA = new TypeA ( ) ;
typeA. test ( ) ;
new TypeA ( ) . test ( ) ;
}
}
1.3 Uso especial de la interfaz
1.3.1 Cumplimiento de múltiples interfaces
package com. qfedu. a_interface;
interface B {
void testB ( ) ;
}
interface C {
void testC ( ) ;
}
class TypeB implements B , C {
@Override
public void testC ( ) {
System. out. println ( "遵从接口C完成的testC方法" ) ;
}
@Override
public void testB ( ) {
System. out. println ( "遵从接口B完成的testB方法" ) ;
}
}
public class Demo2 {
public static void main ( String[ ] args) {
new TypeB ( ) . testB ( ) ;
new TypeB ( ) . testC ( ) ;
}
}
1.3.2 Herencia + Cumplimiento
package com. qfedu. a_interface;
interface D {
void testD ( ) ;
}
class Father {
public void game ( ) {
System. out. println ( "黄金矿工!!!" ) ;
}
}
class Son extends Father implements D {
@Override
public void testD ( ) {
System. out. println ( "遵从接口D实现的testD方法" ) ;
}
}
public class Demo3 {
public static void main ( String[ ] args) {
new Son ( ) . game ( ) ;
new Son ( ) . testD ( ) ;
}
}
1.3.3 palabra clave predeterminada
package com. qfedu. a_interface;
interface E {
void test ( ) ;
default public void testDefault ( ) {
System. out. println ( "默认方法" ) ;
}
}
class TypeC implements E {
@Override
public void test ( ) {
System. out. println ( "遵从接口E实现的test方法" ) ;
}
}
public class Demo4 {
public static void main ( String[ ] args) {
new TypeC ( ) . test ( ) ;
new TypeC ( ) . testDefault ( ) ;
}
}
2. Análisis de problemas prácticos de la vida [código de caso tres veces]
2.1 Animales y varios animales
动物可以看做是一个类
老虎,狮子,熊猫可以各自看做是一个类
老虎,狮子,熊猫 ==> 是不是动物??? 是
package com. qfedu. b;
class Animal {
}
class Tiger extends Animal {
}
class Lion extends Animal {
}
class Panda extends Animal {
}
public class Demo1 {
public static void main ( String[ ] args) {
Animal animal = new Animal ( ) ;
Tiger tiger = new Tiger ( ) ;
Lion lion = new Lion ( ) ;
Panda panda = new Panda ( ) ;
feedAnimal ( animal) ;
feedAnimal ( panda) ;
feedAnimal ( lion) ;
feedAnimal ( tiger) ;
Animal animal2 = getAnimal ( ) ;
Panda panda2 = ( Panda) animal2;
}
public static void feedAnimal ( Animal animal) {
System. out. println ( animal. getClass ( ) . getName ( ) + "来吃饭了~~~" ) ;
}
public static Animal getAnimal ( ) {
return new Panda ( ) ;
}
}
2.2. Interfaz USB y dispositivo USB
USB接口 ==> interface
规定当前USB设备需要完成的方法是什么。
USB设备 ==> 键盘 鼠标 遵从USB接口
电脑通过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 LogiG502 extends Mouse {
@Override
public void connect ( ) {
System. out. println ( "Logi G502 游戏鼠标,非常nice" ) ;
}
}
class Computer {
public void useUsbInterface ( USB usb) {
usb. connect ( ) ;
}
}
public class Demo2 {
public static void main ( String[ ] args) {
Mouse mouse = new Mouse ( ) ;
Keyboard keyboard = new Keyboard ( ) ;
Computer computer = new Computer ( ) ;
computer. useUsbInterface ( mouse) ;
computer. useUsbInterface ( keyboard) ;
computer. useUsbInterface ( new Filco ( ) ) ;
computer. useUsbInterface ( new LogiG502 ( ) ) ;
}
}
2.3 Recuerda dos oraciones con polimorfismo
父类的引用指向子类的对象
接口的引用指向遵从接口的类对象
这就是多态
多态的作用:
1. 拓宽方法的参数范围
例如:
方法参数是Animal类,这里可以传入Animal类对象,Tiger类对象,Lion类对象...
方法参数是USB接口,可以传入Mouse类对象,Keyboard类对象。
2. 拓宽方法的返回值范围
例如:
方法返回值类型是Animal类型,这里可以返回的数据Tiger类对象,Panda类对象...
慢慢揣摩【编译看左,运行看右】
3. Cooperación de varios tipos
3.1 Ensamblar la computadora
键盘是一个类
属性:
品牌 按键个数
成员方法就是Setter和Getter方法
屏幕是一个类
属性:
品牌,尺寸
成员方法就是Setter和Getter方法
电脑是一个类
成员变量:
键盘和屏幕是电脑的成员变量。
【包含关系】
成员方法:
换键盘 setter 方法
换屏幕 setter 方法
展示电脑的配置
数范围
例如:
方法参数是Animal类,这里可以传入Animal类对象,Tiger类对象,Lion类对象...
方法参数是USB接口,可以传入Mouse类对象,Keyboard类对象。
2. 拓宽方法的返回值范围
例如:
方法返回值类型是Animal类型,这里可以返回的数据Tiger类对象,Panda类对象...
慢慢揣摩【编译看左,运行看右】
3. Cooperación de varios tipos
3.1 Ensamblar la computadora
键盘是一个类
属性:
品牌 按键个数
成员方法就是Setter和Getter方法
屏幕是一个类
属性:
品牌,尺寸
成员方法就是Setter和Getter方法
电脑是一个类
成员变量:
键盘和屏幕是电脑的成员变量。
【包含关系】
成员方法:
换键盘 setter 方法
换屏幕 setter 方法
展示电脑的配置
``