欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java继承中的多态实例

程序员文章站 2022-03-26 16:49:47
java类继承中的多态...

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("演出结束");
		
		}		


	}

运行 结果Java继承中的多态实例

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

相关标签: java 多态