java学习笔记----测试多态的用法

java学习笔记(高琪版)

面向对象OOP

测试多态的用法

  • 多态,是指程序最终状态是在程序运行时才被确定
  • 首先一个类需要被多个类所继承
  • 这多个类相较于父类都有一定的改写才有意义(方法的重写)
  • 新建对象时父类引用指向子类的对象
  • 带入方法的对象必须是父类形式

先定义三个继承于一个父类的子类

package com.lyr.oop.polymorphism;
/*
 * 测试多态的用法
 */
public class Animal {
    String name;

    public void voice(){
        System.out.println("动物的叫声");
    }
}

class Cat extends Animal {
    public void voice(){
        System.out.println("喵喵喵");
        }
    public void Catch(){
        System.out.println("抓住了");
        }
}
class Dog extends Animal{
    public void voice(){
        System.out.println("汪汪汪");
    }
}
class Pig extends Animal{
    public void voice(){
        System.out.println("哼哼哼");
    }
}

test类,新建父类对象即可,代码运行时才考虑到具体是什么对象

package com.lyr.oop.polymorphism;
public class Test {

    public static void testAnimalVoice(Animal c){
        c.voice();
        if (c instanceof Cat ){     //了解instanceof的用法,放在多态中用可判断输入的具体对象是什么
        ((Cat) c).Catch();  
        }
    }

    //下面是直接指定了该方法的输入对象,对象必须是Cat;

    /*public static void testAnimalVoice(Cat c){
        c.voice();
    }
    */

    public static void main(String[]args){
    Animal a = new Cat();
    testAnimalVoice(a);
    Animal b = new Dog();
    testAnimalVoice(b);


    Pig c = new Pig();
    testAnimalVoice(c);
    }
}

instanceof的用法,判断输入的对象是否为指定对象,放在多态的方法中;
如果需要调用这个子类对象特有并需要特殊执行的方法,则可以用。

猜你喜欢

转载自blog.csdn.net/cn_leeyiru_static/article/details/54746182