java 之多态基本概念和instanceof 运算符
面向对象三大特征 继承,封装,多态。实现多态必须有继承,重写方法
| 编译(说) | 运行(做) |
| 父类的方法 | 子类的实际方法() |

实例
package com.bjsxt.oop.polymorphism;
public class Animal {
public void voice() {
System.out.println("普通叫声");
}
}
class Cat extends Animal{
public void voice() {
System.out.println("喵喵");
}
}
class Dog extends Animal{
public void voice() {
System.out.println("汪汪汪");
}
}
class Pig extends Animal{
public void voice() {
System.out.println("哼哼哼");
}
}
package com.bjsxt.oop.polymorphism;
public class Test {
public static void testAnimalVoice(Animal animal){
animal.voice();
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
Cat cat=new Cat();
Dog dog =new Dog();
Pig pig=new Pig();
testAnimalVoice(cat);
testAnimalVoice(dog);
testAnimalVoice(pig);
}
}



父类的引用指向子类的对象,可以使用上图中的方法使用多态
多态是方法的多态,属性没有多态
//对象的转型
package com.bjsxt.oop.polymorphism;
public class Test {
public static void testAnimalVoice(Animal animal) {
animal.voice();
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
Animal cat = new Cat();
Animal dog = new Dog();
Animal pig = new Pig();
testAnimalVoice(cat);
testAnimalVoice(dog);
testAnimalVoice(pig);
// cat.catchMouse();//编译器中 并没有找到 Animal 有这个方法,因此会报错,解决这个方法,要进行转型
Cat a2 =(Cat)cat;
a2.catchMouse();
}
}
instanceof

posted on 2016-03-11 15:13 1130136248 阅读(99) 评论(0) 收藏 举报
浙公网安备 33010602011771号