zoukankan      html  css  js  c++  java
  • 2018/01/07JAVA 基础 / 接口与继承:多态的概念、接口的意义是什么呢?

    概念

    类的多态 :父类引用指向子类对象.如下第15、16行。

    多态: 都是同一个类型,调用同一个方法,却能呈现不同的状态。举例如下代码中的第18、20行:

     1 package property;
     2  
     3 public class Item {
     4     String name;
     5     int price;
     6  
     7     public void buy(){
     8         System.out.println("购买");
     9     }
    10     public void effect() {
    11         System.out.println("物品使用后,可以有效果 ");
    12     }
    13     //其中LifePotion、MagicPosition类为Item类的子类 
    14     public static void main(String[] args) {
    15         Item i1= new LifePotion();//类的多态性,父类指向子类对象
    16         Item i2 = new MagicPotion();
    17         System.out.print("i1  是Item类型,执行effect打印:");
    18         i1.effect();
    19         System.out.print("i2也是Item类型,执行effect打印:");
    20         i2.effect();
    21     }
    22  
    23 }

    要实现类的多态,需要如下两个条件
    1. 父类(接口)引用指向子类对象
    2. 调用的方法有重写

    接口的意义/使用多态的好处

    如下代码

     1 package charactor;
     2  
     3 import property.Item;
     4 import property.LifePotion;
     5 import property.MagicPotion;
     6    
     7 public class Hero {
     8     public String name;
     9     protected float hp;
    10  
    11     public void useItem(Item i){
    12         i.effect();
    13     }
    14  
    15     public static void main(String[] args) {
    16          
    17         Hero garen =  new Hero();
    18         garen.name = "盖伦";
    19      
    20         LifePotion lp =new LifePotion();
    21         MagicPotion mp =new MagicPotion();
    22          
    23         garen.useItem(lp);
    24         garen.useItem(mp);     
    25          
    26     }
    27        
    28 }

    在第11~13行,只需要在Hero类中设计一个方法【方法的参数为父类或接口类的引用,该引用将指向子类引用所指向的对象】,通过父类引用/接口引用就可以调用不同子类重写的方法体甚至是在子类中增加的方法体。体现子方法的特殊性。

  • 相关阅读:
    房地产周期
    Vue ElementUi Excel文件和表单内容同时提交
    git从分支拉取代码到本地,并修改后提取代码到该分支
    ps学习笔记
    面试小结
    比较好的样式
    前端开发规范
    修改ElementUI源码总结
    前端学习手册
    书单
  • 原文地址:https://www.cnblogs.com/lijiehua/p/8229161.html
Copyright © 2011-2022 走看看