精华内容
下载资源
问答
  • 使用多态的好处

    2020-07-20 16:25:13
  • 之前对多态了解的不是特别清楚,现在权当是写个列子加深印象,说明适当的时候使用多态可以达到的好处。比如,现在在动物园,饲养员的话需要喂养很多动物,正常情况下的话,对饲养员来说需要一个一个去喂养,写成程序...

    学java的都知道java的三大特性:封装、继承、多态。

    之前对多态了解的不是特别清楚,现在权当是写个列子加深印象,说明适当的时候使用多态可以达到的好处。

    比如,现在在动物园,饲养员的话需要喂养很多动物,正常情况下的话,对饲养员来说需要一个一个去喂养,写成程序的方法如下:

    public classPerson {//饲养员喂猫

    public voidfeed(Cat cat){

    System.out.println("喂猫");

    }//饲养员喂狗

    public voidfeed(Dog dog){

    System.out.println("喂狗");

    }//饲养员喂养其他动物……

    }

    再把具体的动物形象出来

    public class Cat {public voideat(){

    System.out.println("猫吃饭");

    }

    }

    public class Dog{public voideat(){

    System.out.println("狗吃饭");

    }

    }

    这种情况下,饲养员需要针对每种动物去专门喂养,写成程序如下

    public classFeed {public static voidmain(String[] args) {

    Cat cat= newCat();

    Dog dog= newDog();

    Person person= newPerson();//饲养员喂猫

    person.feed(cat);//饲养员喂狗

    person.feed(dog);

    }

    }

    如果动物很多,饲养员就会很累,需要不同动物的feed方法,程序就需要new 很多具体动物出来,写出来也比较繁琐,这时候就体现出多态的好处。

    我们只需要在每个动物的食盆前面加上自动喂食的机器,饲养员只需要在房间里按下按钮,食物就自动倒在动物的食盆里,所以,饲养员就不需要专门到每个动物前面喂食了,所以我们只需要修改饲养员的喂养方法,让饲养员只有一个喂养动物的方法

    public classPerson {//饲养员喂食

    public voidfeed(Animal animal){

    System.out.println("喂" + animal.getName() + "吃饭");

    }

    }

    我们再把具体的动物写出来

    public classAnimal {privateString name;publicString getName() {returnname;

    }publicAnimal setName(String name) {this.name =name;return this;

    }public voideat(Animal animal) {

    System.out.println(animal.getName()+ "在吃饭");

    }

    }

    public class Cat extends Animal {

    private String name;

    public String getName() {

    return name;

    }

    public Cat setName(String name) {

    this.name = name;

    return this;

    }

    public Cat(String name) {

    this.name = name;

    System.out.println(this.name + "食盆倒满");

    }

    }

    public class Dog extends Animal {

    private String name;

    public String getName() {

    return name;

    }

    public Dog setName(String name) {

    this.name = name;

    return this;

    }

    public Dog(String name) {

    this.name = name;

    System.out.println(this.getName() + "食盆倒满");

    }

    }

    这样,饲养员喂养的时候,只需要调用喂养的方法就可以了,不需要知道专门的动物

    public class Feed {

    public static void main(String[] args) {

    Person person = new Person();

    Animal animal_1 = new Cat("猫");

    //喂猫

    person.feed(animal_1);

    Animal animal_2 = new Dog("狗");

    //喂狗

    person.feed(animal_2);

    }

    }

    f43550a3975712c05e7384a42dabb54f.png

    这样写出来,饲养员就会省事省时省力很多。

    我们可以把不同子类的对象都当做父类类型来对待,可以屏蔽不同子类对象之间的实现差异,从而写出通过的代码达到通用编程,以适应需求的不断变化。

    展开全文
  • 使用多态的好处 如果函数\方法的参数是父类类型,那么父类、子类对象都可以传入。 1 #import <Foundation/Foundation.h> 2 //Animal类 3 @interface Animal : NSObject 4 - (void)eat; 5 @end ...

     

    使用多态的好处

         如果函数\方法的参数是父类类型,那么父类、子类对象都可以传入。

     1 #import <Foundation/Foundation.h>
     2 //Animal类
     3 @interface Animal : NSObject
     4 - (void)eat;
     5 @end
     6 @implementation Animal
     7 - (void)eat
     8 {
     9     NSLog(@"Animal---吃东西");
    10 }
    11 @end
    12 
    13 //Dog类
    14 @interface Dog : Animal
    15 - (void)run;
    16 @end
    17 @implementation Dog
    18 - (void)run
    19 {
    20     NSLog(@"Dog---跑");
    21 }
    22 - (void)eat
    23 {
    24     NSLog(@"Dog---吃");
    25 }
    26 @end
    27 
    28 //Cat类
    29 @interface Cat : Animal
    30 - (void)eat;
    31 @end
    32 @implementation Cat
    33 - (void)eat
    34 {
    35     NSLog(@"Cat---吃");
    36 }
    37 @end
    38 
    39 //定义一个函数  喂动物
    40 void feed(Animal *a)
    41 {
    42     [a eat];
    43 }
    44 int main(int argc, const char * argv[])
    45 {
    46     //函数参数为父类类型,父类和子类对象都可以传入
    47     Animal *aa = [Animal new];
    48     feed(aa);
    49 
    50 
    51     Dog *d = [Dog new];
    52     feed(d);
    53     Cat *c = [Cat new];
    54     feed(c);
    55     
    56     //父类对象不能直接调用子类方法,必须强转为子类类型才可以调用子类方法
    57     Animal *animal1 = [Dog new];
    58     //父类对象不能直接调用子类方法
    59     //[animal1 run]
    60     Dog *a1 = (Dog *)animal1;
    61     [a1 run];
    62     return 0;
    63 }

     

     

    局限性:

    1>父类类型的变量  不能直接调用子类特有的方法

    2>必须强转为子类类型变量后,才可以调用子类特有的方法

     

    转载于:https://www.cnblogs.com/xdl745464047/p/4000672.html

    展开全文
  • java_使用多态的好处

    2019-03-27 16:50:02
  • Java中多态的好处: 提高了代码的维护性(继承保证) 提高了代码的扩展性 猫狗案例举例: //定义一个动物类 class Animal { public void eat() { System.out.println("eat"); } public void sleep()...
  • 一,为了理解多态,我们先给出一个示例 代码示例:(打印多种图形) class Shape{ 定义一个图形类作为父类 public void draw(){ //啥都不用干 } } class Cycle extends Shape{ @Override //声明重写父类中...
  • 一,为了理解多态,我们先给出一个示例代码示例:(打印多种图形)class Shape{ 定义一个图形类作为父类public void draw(){//啥都不用干}}class Cycle extends Shape{@Override //声明重写父类中方法public void ...
  • day10_19
  • 1. 不使用多态的实现 1.1 主人起初只养了狗,需要实现喂养狗的一个功能,示例代码如下。 1.2 后来,主人又养了猫,那么实现喂养狗、猫的示例代码如下。 总结:随着宠物的增加,主人这个类需要针对不同宠物...
  • 继承和实现都能做为多态的前提 这里一个左边是Teacher 一个是Assistant。...使用多态的方式对比一下,编译看左边,运行看右,那么这里的Employee的work方法实际上调用的是Teacher的work方法也就是讲课。 ...
  • –编译看左边:想要保存成功,使用父类提供功能 –运行看右边:想要结果,找子类 –3、入门案例 package com.xsd.multi; //这类用来 测试 多态 public class Test2_Multi { public static void mai
  • 多态的好处和弊端

    千次阅读 2018-07-14 21:50:32
    多态的好处和弊端 A:多态的好处 a:提高了代码的维护性(继承保证) b:提高了代码的扩展性(由多态保证) B:案例演示 多态的好处 可以当作形式参数,可以接收任意子类对象 C:多态的弊端 不能使用子类的特有属性...
  • 多态的好处作用

    2019-04-06 21:56:00
    多态的好处:提高了代码的扩展性,前期定义的代码可以使用后期的内容,就是后期有父类或接口 被子类继承,实现后那么 只要方法参数类型是父类的,都可以使用-------------定义一个父类:Animal package Polymorphic...
  • 使用多态有什么好处?我们将根据以上五个问题展开激烈讨论。 什么是多态?   多态,顾名思义指“多种形态”。多态表示不同对象可以执行相同动作,但要通过它们自己实现代码来执行。 例:猪、狗、猫都...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,576
精华内容 630
关键字:

使用多态的好处