温故而知信 回顾一下面向对象 -----多态 最简单易懂版

以前觉得好难,现在回顾 忽然觉得好简单啊 就这点东西

直接上代码 


package cn.xzc.hrms;

public class 多态学习 {

    public static void main(String[] args) {
        //    人类是人
        People people= new People();
//    人类是动物
        Animal animal_pe = new People();
//    猪是都动物
        Animal animal_pi = new Pig();
//    猪是人类 语法错误 逻辑错误
//    人类是猪 语法错误 ;逻辑错误
//    动物是人类
//     People people2= new Animal(); 语法错误
//    显然 父类对象 接收子类对象的变量的地址 是多态
        people.eat();
        animal_pe.eat();
        animal_pi.eat();
        /*1.显然父类变量调用的方法子类重写了 是直接调用的子类方法
        * 2.父类变量只能调用出父类方法中有的方法
        * */
        if(animal_pi instanceof Pig){
            Pig pig=(Pig) animal_pi;
            pig.sleeping();
        };
        /*
        * 3.父类非要用子类的方法那就只能强转了(大转小)  向下造型
        * */
        
        /*
        * 根据这个特征显然多态的存在的作用在于屏蔽了差异性
        * 同一个父类的变量的eat方法 由于子类地址不同,实际调用的是子类各自的特定的差异方法
        * 但是对父类而言 都是调用的eat方法,好用
        * */

    }


};
class Pig extends Animal{
  String name ="pig";
  public  void eat(){
      System.out.println("白菜");
  }
    public  void sleeping(){
        System.out.println("sleeping");
    }

};
class People extends Animal{
    String name ="people";
    public  void eat(){
        System.out.println("蛋炒饭");
    }
};

class Animal{
    String basename ="animal";
    public  void eat(){
        System.out.println("eating   ");
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章