对多态的简单理解


对多态的简单理解

多态不能对子类的属性起作用

通过代码了解:

package deom;

public class 多态 {
	public static void main(String[] args) {
		多态 duo = new 多态();
		duo.test(new Dog());
		// Animals animals = new Dog(); 父类引用子类的对象,调用子类重写的父类的方法
		System.out.println("***********");
		duo.test(new Cat());
		// Animals animals = new Cat(); 父类引用子类的对象,调用子类重写的父类的方法
	}
	//使用多态时写的函数
	void test(Animals animals)
	{
		animals.eat();
		animals.shout();
		System.out.println("age:"+animals.age);//多态不能对子类的属性起作用
	}
	//不使用多态时写的函数(实现相同功能)
	void test(Dog dog)
	{
		dog.eat();
		dog.shout();
	}
	void test(Cat cat)
	{
		cat.eat();
		cat.shout();
	}
	//由此可见,使用多态可以增加代码的复用性

}
class Animals
{
	int age = 3;
	void eat()
	{
		System.out.println("动物吃东西。");
	}
	void shout()
	{
		System.out.println("动物叫。");
	}
}
class Cat extends Animals
{
	int age = 4;
	void eat()
	{
		System.out.println("小猫吃鱼。");
	}
	void shout()
	{
		System.out.println("喵喵喵!");
	}
}
class Dog extends Animals
{
	void eat()
	{
		System.out.println("小狗吃肉。");
	}
	void shout()
	{
		System.out.println("汪汪汪!");
	}
}

////输出:
//		小狗吃肉。
//		汪汪汪!
//		***********
//		小猫吃鱼。
//		喵喵喵!

文章作者: 一袖南烟顾
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 一袖南烟顾 !
评论
  目录