面向对象(多态)-->3

 

 

初识多态:

创建Animal类(父类):

 

 

 运行结果:

 

 

 即:同类型的对象,在执行同一行为时,表现出不同的行为特征

多态的优势:

 

 

 多态不能访问子类独有的功能:

 

 

 多态中的类型转换问题:

1、自动类型转换:子类对象赋值给父类类型的变量指向:

2、强制类型转换:子类  对象变量  = (子类)父类类型变量;

 

 

 3、异常 ClassCastException转型后的类型和对象的真是类型不是同一类型,会出现ClassCastException异常错误信息。

 

 

 建议类型转换之前使用instanceof判断对象的真实类型

 

 

 

 

 

 

 多态综合案例:

需求:

  • 使用面向对象编程模拟:设计一个电脑对象,可以安装2个USB设备;
  • 鼠标:安装时可以完成接入、调用点击功能、拔出功能;
  • 键盘:安装时可以完成接入、调用打字功能、拔出功能;
1 //接口定义规范:必须实现接入、拔出功能
2 public interface USB {
3     void connnect();
4     void unconnect();
5 }

 

 1 //鼠标类
 2 public class Mouse implements USB{
 3     private String brand;
 4 
 5     public Mouse(String brand) {
 6         this.brand = brand;
 7     }
 8 
 9     public Mouse() {
10     }
11 
12     public String getBrand() {
13         return brand;
14     }
15 
16     public void setBrand(String brand) {
17         this.brand = brand;
18     }
19     //子类独有的功能
20     public void click(){
21         System.out.println(brand + "鼠标点击功能");
22     }
23 
24     @Override
25     public void connnect() {
26         System.out.println(brand + "鼠标成功插入电脑");
27     }
28 
29     @Override
30     public void unconnect() {
31         System.out.println(brand + "鼠标成功拔出电脑");
32     }
33 }

 

 1 //键盘类
 2 public class Keyboard implements USB{
 3     private String brand;
 4 
 5     public String getBrand() {
 6         return brand;
 7     }
 8 
 9     public void setBrand(String brand) {
10         this.brand = brand;
11     }
12 
13     public Keyboard(String brand) {
14         this.brand = brand;
15     }
16 
17     public Keyboard() {
18     }
19 
20     //子类独有功能
21     public void print(){
22         System.out.println("键盘打字功能");
23     }
24 
25     @Override
26     public void connnect() {
27         System.out.println(brand + "键盘成功插入电脑");
28     }
29 
30     @Override
31     public void unconnect() {
32         System.out.println(brand + "键盘成功拔出电脑");
33     }
34 }

 

 1 public class Test {
 2     public static void main(String[] args) {
 3         //创建鼠标对象调用相关功能
 4         Mouse mouse = new Mouse("华为");
 5         mouse.click();
 6         mouse.connnect();
 7         mouse.unconnect();
 8         System.out.println("--------------");
 9         //创建键盘对象调用相关功能
10         Keyboard keyboard = new Keyboard("小米");
11         keyboard.print();
12         keyboard.connnect();
13         keyboard.unconnect();
14     }
15 }

 

运行结果:

posted @ 2022-05-01 10:44  羽梦齐飞  阅读(191)  评论(0编辑  收藏  举报