package com.qfedu.c;
/**
* 动物类
* @author Anonymous
*
*/
class Animal {
}
/**
* 老虎类,继承Animal类
* @author Anonymous
*
*/
class Tiger extends Animal {
}
/**
* 熊猫类,继承Animal类
* @author Anonymous
*
*/
class Panda extends Animal {
}
/**
* 猴子类,继承Animal类
* @author Anonymous
*
*/
class Monkey extends Animal {
}
public class Demo1 {
public static void main(String[] args) {
Animal animal = new Animal();
Tiger tiger = new Tiger();
Panda panda = new Panda();
Monkey monkey = new Monkey();
showAnimal(animal);
// tiger也是动物
showAnimal(tiger);
// panda也是动物
showAnimal(panda);
// monkey还是动物
showAnimal(monkey);
System.out.println("--------------------------------");
// 引用数据类型强制类型转换,讲Animal类型强制转换为Panda
Panda p = (Panda) getAnimal();
System.out.println(p);
}
/**
* 展示动物的方法
*
* @param animal 这里需要的是一个Animal类对象
*/
public static void showAnimal(Animal animal) {
System.out.println(animal);
}
/**
* 返回一个动物类对象
*
* @return Animal类对象
*/
public static Animal getAnimal() {
return new Panda(); //Panda类对象是动物
// return new Tiger(); //Tiger类对象是动物
// return new Monkey(); //Monkey类对象是动物
// return new Animal();
}
}
USB接口
规定一个方法
connect方法
键盘一个类
鼠标一个类
package com.qfedu.c;
/**
* USB接口
*
* @author Anonymous
*
*/
interface USB {
/**
* 要求所有的USB设备,都要完成connect方法
* 告知PC当前设备是什么功能
*/
void connect();
}
/**
* Mouse类遵从USB接口,可以认为是一个USB设备
*
* @author Anonymous
*
*/
class Mouse implements USB {
@Override
public void connect() {
System.out.println("鼠标控制光标");
}
}
/**
* Logi是Mouse类的子类,是鼠标类的子类,
* 是否间接遵从USB接口? 是的
*
* 算不算USB设备? 算
* @author Anonymous
*
*/
class Logi extends Mouse {
@Override
public void connect() {
System.out.println("Logi Master 2S");
}
}
/**
* Keyboard类遵从USB接口,也可以认为是一个USB设备
*
* @author Anonymous
*
*/
class Keyboard implements USB {
@Override
public void connect() {
System.out.println("键盘敲代码");
}
}
/**
* IKBC类,继承Keyboard类,是键盘类的子类
* 算不算USB设备??? 算
* @author Anonymous
*
*/
class IKBC extends Keyboard {
@Override
public void connect() {
System.out.println("IKBC C87 270 -/+ RMB");
}
}
/**
* 电脑类
*
* @author Anonymous
*
*/
class Computer {
/**
* 电脑使用通过USB接口,连接USB设备
* @param usb USB接口,要求连接是一个USB设备
*/
public void useUSBInterface(USB usb) {
// 通过USB设备执行connect方法,执行功能
usb.connect();
}
}
public class Demo2 {
public static void main(String[] args) {
// 电脑类对象
Computer computer = new Computer();
// Mouse是USB设备
Mouse mouse = new Mouse();
// Keyboard也是USB设备
Keyboard keyboard = new Keyboard();
// 电脑需要通过USB接口连接USB设备
computer.useUSBInterface(mouse);
computer.useUSBInterface(keyboard);
// computer通过USB设备连接Mouse或者Keyboard类的子类是完全OK的
// 因为这些子类也是USB设备
computer.useUSBInterface(new Logi());
computer.useUSBInterface(new IKBC());
}
}