Java继承中的多态实例

2022-07-27,,,

java继承中的多态

列题:利用多态来实现动物类、狗类 、猫类 牛类 、羊类,随机生成10动物来唱歌比赛

//创建一个动物类
public class Dog extends Animal {
	public void sing() {//唱歌的方法
		
		System.out.println("旺。。。。。旺");

	}

}

//创建一个猫类继承动物类
public class Cat extends Animal{
	public void sing() {//重写父类唱歌的方法
		
		System.out.println("喵·。。。。。。喵");
		
	}

}

//创建一个牛类继承动物类
public class Cow extends Animal {
	public void sing() {	//重写父类唱歌的方法

		System.out.println("哞哞。。。。。");

		
	}
}

//创建一个羊类继承动物类
public class Sheep extends Animal {
	public void sing() {//重写父类唱歌的方法
	System.out.println("咩。。。。。咩");

	}
}

//创建一个狗类继承动物类
public class Dog extends Animal {
	public void sing() {//重写父类唱歌的方法
		
		System.out.println("旺。。。。。旺");

	}

}

测试

public static void main(String[] args) {
		// TODO Auto-generated method stub
		/*多态的特性
		 * Animal r=new Cat()称为上转型变量
		 * r对象可以访问子类从父类继承的属性以及方法,不能访问子类特有的属性和方法
		 * r对象访问的方法在子类中如果被重写了,那么r访问的就是被重写后的方法
		 * 如果强制转换如Cat r=new Cat();则r就可以访问子类中的所有属性及方法
		 * 
		 * */
		//创建一个数组,数组的类型为Animal
		Animal [] arr=new Animal[10];//多态的体现
		for(int i=0;i<=9;i++) {
			int a=(int)(Math.random()*10)%4;//产生一个0到3 的随机数            int a=rand.nextLine(3)产生0到3的整数
			switch(a) {
			case 0: 
			      arr[i]=new Dog();
			       break;
			case 1:	arr[i]=new Cow();break;
			case 2: arr[i]=new Sheep();break;
			case 3:arr[i]=new Cat();break;

			}
		}
		
			for(int i=0;i<=9;i++) {
		
				arr[i].sing();
					
			}
			System.out.println("演出结束");
		
		}		


	}

另一种测试

public class AnimalWork {
	public void context(Animal r) {//利用多态 调用同一个方法,参数不同,sing()方法的结果也不同
		r.sing();
		 
		
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		/*多态的特性
		 * Animal r=new Cat()称为上转型变量
		 * r对象可以访问子类从父类继承的属性以及方法,不能访问子类特有的属性和方法
		 * r对象访问的方法在子类中如果被重写了,那么r访问的就是被重写后的方法
		 * 如果强制转换如Cat r=new Cat();则r就可以访问子类中的所有属性及方法
		 * 
		 * */
		//创建一个数组,数组的类型为Animal
		Animal [] arr=new Animal[10];//利用多态,不知道你产生的是什么类,但是他都属于动物类,我就用动物类来接收
		AnimalWork s=new AnimalWork();
		for(int i=0;i<=9;i++) {
			int a=(int)(Math.random()*10)%4;//产生一个0到3 的随机数            int a=rand.nextLine(3)产生0到3的整数
			switch(a) {
			case 0: 
			      arr[i]=new Dog();
			       break;
			case 1:	arr[i]=new Cow();break;
			case 2: arr[i]=new Sheep();break;
			case 3:arr[i]=new Cat();break;

			}
		}
		
			for(int i=0;i<=9;i++) {
		
				s.context(arr[i]);
					
			}
			System.out.println("演出结束");
		
		}		


	}

运行 结果

本文地址:https://blog.csdn.net/weixin_46719052/article/details/110272466

《Java继承中的多态实例.doc》

下载本文的Word格式文档,以方便收藏与打印。