面向对象三大特征的多态

多态的定义:

       是指同一行为,具有多个不同表现形式。

多态的条件:

  1. 继承或者实现【二选一】
  2. 方法的重写【意义体现:不重写,无意义】
  3. 父类引用指向子类对象【格式体现】

多态的好处:

         增加方法的扩展性和复用性。

使用多态特性,注意什么样的弊端:

         不能调用子类特有方法,必须向下转型。

接口的定义:

          接口,是Java语言中一种引用类型,是方法的集合。

          使用interface关键定义接口,其中可以定义抽象方法,默认方法,私有方法,静态方法


引用类型转换:

向上转型:多态本身是子类类型向父类类型向上转换的过程,这个过程是默认的,当父类引用指向一个子类对象时,便是向上转                  型。

向下转型:父类类型向子类类型向下转换的过程,这个过程是强制的。一个已经向上转型的子类对象,将父类引用转为子类引                      用,可以使用强制类型转换的格式,便是向下转型。


案例分析:

进行描述笔记本类,实现笔记本使用USB鼠标,USB键盘

  • USB接口,包含开启功能、关闭功能
  • 笔记本类,包含运行功能,关机功能、使用USB设备功能
  • 鼠标类,要实现USB接口,并具备点击的方法
  • 键盘类,要实现USB接口,具备敲击的方法
// 定义USB接口
  interface USB{
      void open(); // 开启功能
      void close(); // 关闭功能
}
// 定义鼠标类:
class Mouse implements USB{
    public void open(){
      System.out.println("鼠标开启,红灯闪一闪");
}
     public void close(){
       System.out.println("鼠标关闭,红灯熄灭");
}
     public void click(){
       System.out.println("鼠标点击");
}
}
// 定义键盘类
class KeyBoard implements USB{
    public void open(){
        System.out.println("键盘开启");
}
    public void close(){
       System.out.println("键盘关闭");
}
    pubilc void type(){
        System.out.println("键盘打字");
}
}
// 定义笔记本类
class Laptop{
     //笔记本开启运行功能
     public void run(){
       System.out.println("笔记本运行");
}
// 笔记本使用USB设备,这时当笔记本对象调用这个功能时,必须给其传递一个符合USB规则的USB设备
    public void useUSB(USB usb){
           //判断是否有USB设备
           usb.open();
          // 类型转换,调用特有方法
          if(usb insteanceof Mouse){
               Mouse m = (Mouse)usb;
                    m.click();
             }else if(usb insteanceof KeyBoard){
               KeyBoard kb = (KeyBoard) usb;
                 kb.type();
}
         usb.close();
} public void shutDown(){ System.out.println("笔记本关闭");
}
}
// 测试类
public static void main(String[] args){
      //创建笔记本实体对象
      Laptop lt = new Laptop();
      //笔记本开启
      lt.run();

       // 创建鼠标实体对象
       Usb u = new Mouse();
       //笔记本使用鼠标
       lt.useUSB(u);

       //创建键盘实体对象
       KeyBoard kb = new KeyBoard();
       // 笔记本使用键盘
       lt.useUSB(kb);

       //笔记本关闭
       lt.shutDown();
}
}





猜你喜欢

转载自blog.csdn.net/xiaodan_0916/article/details/80927362