Day11多态部分-1 【1.1 多态的体现】

来源:互联网 发布:淘宝定制家具付款流程 编辑:程序博客网 时间:2024/06/05 09:49

【1.1 多态的体现】

  • 多态的好处:提高了扩展性(提高代码的共用性);

    1.定义:某一类事物的多种存在形态:

    java语言中含有【方法重载】和【对象多态】两种形式的多态

    猫 x = new 猫()

    动物 x = new 猫()//new 猫()

    来了一只真实的小猫 我说 这动物不错,

    new 的这个实体既具备猫的类型,也具备动物的类型

    但是有个前提,猫必须是动物的一种;

    2.当类与类产生关系:

    那么这个实体还具备其他类型,这个事物存在多种形态-->多态;

    多态我们强调的是在java中,对象上的体现;

    3.其实函数也具备多态性,重载,同一个名字,体现形态不一样

    (方法的重载也是多态的一种);

    • + -

      api里面所有的类和接口关系都是

      以面向对象的几大特征为开发基准的,不了解的话连api都看不到;

      //这叫前期预先调用功能,后期定义子类去实现功能,并把子类作为参数,传递进来,实现了后期拓展性

      • public static void main(String[] args) {

         Animal a1 =new Dog();//继承了动物,都是动物的一种,即是猫也是动物

          Animal a2 =new Cat();

          test(a1);//3.方法名,将对象a1传入

          test(a2);//传入什么对象输出什么方法

          Animal a3 =new Pig();//因为继承了父类,所以不用写重载方法,用回引用Animal的重载方法即可

          test(a3);

        //多态的好处:提高程序的拓展性

        //这叫前期预先调用功能,后期定义子类去实现功能,并把子类作为参数,传递进来,实现了后期拓展性

        public static void test(Animal sx){//1.Animal引用sx对象

        sx.eat();//2.对象引用Animal的eat方法

        }

        }

        abstract class Animal{//抽象的作用强制子类重写方法

        abstract void eat();

        }

        class Cat extends Animal{

        public void eat(){

        System.out.println("吃鱼(重写Animal的eat方法)");

        }

        }

        class Dog extends Animal{

        public void eat(){

        System.out.println("吃骨头(重写Animal的eat方法)");

        }

        }

        //--------------百年后出现了另一种动物 猪

        class Pig extends Animal{

        public void eat() {

        System.out.println("吃饲料(重写Animal的eat方法)");

        }

        public void gongdi(){

        System.out.println("拱地");

        }

        }

      多态的表现:一个对象在不同的状态下有多种形态:如你,对妻子来说你是丈夫,
      对老师来说你是学生,对父母来说你是儿子,对老板来说你是员工

      多态比喻:事物的多种存在:猫是动物也叫猫,

      其它有个名字叫小明,那么我叫它猫-动物-小明都三个名都是指它     

原创粉丝点击