java多态实例代码介绍



java多态实例代码。多态要有继承还要有重写,而且父类引用指向子类对象。多态是方法的多态。在编程的时候有两个阶段,一个是编译另外一个是运行。多态的时候编译父类运行子类。比如定义了动物作为父类,而具体的猫作为运行。以下是相关的代码实例:

定义动物类animal.java作为父类。

package cn.bjsxt.oop.polymorphism;

public class Animal {
String str;
public void voice(){
System.out.println(“普通动物叫声!”);
}
}

class Cat extends Animal {//猫继承了动物animal类
public void voice(){
System.out.println(“喵喵喵”);
}
public void catchMouse(){//子类有自己的方法,在父类没有这个方法,在多态时不能运行该方法,因为父类没有编译该方法。
System.out.println(“抓老鼠”);
}
}

class Dog extends Animal {//dog.java继承了animal.java
public void voice(){
System.out.println(“汪汪汪”);
}

public void seeDoor(){//子类可以拥有自己的方法
System.out.println(“看门!”);
}

}

class Tiger extends Animal {
public void voice(){
System.out.println(“哇哇哇”);
}
}

class Pig extends Animal {
public void voice(){
System.out.println(“哼哼哼”);
}
}


 

多态测试类实例test.java:

package cn.bjsxt.oop.polymorphism;

public class Test {

public static void testAnimalVoice(Animal c){//传入的是animal类,包含了猫狗猪。
c.voice();
if(c instanceof Cat){//判断c是否为cat对象
((Cat) c).catchMouse();
}
}

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

public static void testAnimalVoice(Pig c){
c.voice();
}*/
//javac Test.java
// java Test
public static void main(String[] args) {
Animal a = new Cat();//父类引用指向子类对象,这是多态的一个特征
Cat a2 = (Cat)a;//强制转型才能让子类的方法运行,子类不能强制转换,如猫狗之间不能转
testAnimalVoice(a);

// a2.catchMouse();

// Animal b = new Dog();
// Animal c = new Tiger();
// testAnimalVoice(b);//调用时传入的是狗,而狗是属于动物类型的
// testAnimalVoice(c);

}
}