Java之多态

/*
 * 多态
 * 一、多态是方法的多态,属性没有多态
 * 二、写程序的时候,想要调用运行时类型的方法,只能进行强制转换,不然没法经过编译器的检查
 * 三、两个没有关联的类进行转换,会报“ClassCastException”
 * 四、多态存在的三个必要条件:继承、方法重写、父类应用指向子类对象
 */

package py.sxt.com;

public class OOP_4_22_04_duotai {
	public static void main(String[] args) {
		//向上自动转型
		Animal ani = new Dog();
		//属性调用的时候,任然是父类的属性,属性没有多态
		System.out.println(ani.age);
		
		//运行时看对象,即父类引用指向子类对象
		animalCry(ani);
		
		//要调用对象的属性,就须要进行强制类型转化
		Dog dog = (Dog) ani;
		System.out.println(dog.age);
		
		System.out.println(dog instanceof Animal);
		System.out.println(ani instanceof Cat);
		System.out.println(ani instanceof Dog);
	}
	
	static void animalCry(Animal a) {
		a.shout();
	}
}

class Animal {
	int age = 10;

	public void shout () {
		System.out.println("叫了一声。。");
	}
}

class Dog extends Animal {
	int age = 28;

	@Override
	public void shout() {
		// TODO Auto-generated method stub
		System.out.println("汪汪汪。。。");
	}
	
	public void gnawBone () {
		System.out.println("我在肯肉骨头。。");
	}
}

class Cat extends Animal {
	int age = 18;
	
	@Override
	public void shout () {
		System.out.println("喵喵喵喵!");
	}
}
相关文章
相关标签/搜索