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("演出结束");
}
}
运行 结果
本文地址:https://blog.csdn.net/weixin_46719052/article/details/110272466
上一篇: springboot项目利用redis脚本实现请求的限流
下一篇: 秋天的水果蔬菜有哪些