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