JAVA多态

练习

一、选择

C
下列代码的运行结果为:
在这里插入图片描述

A. 我是动物
B. 编译错误
C. 我是动物
我是老虎
我是哈士奇
D. 我是动物 我是老虎 我是哈士奇

C
创建一个父类Animal,一个子类Cat,Animal three = new Cat();不是
A. 向上转型
B. 自动转型
C. 向下转型
D. 隐式转型

A
下列代码怎么修改可以使其成功运行:
在这里插入图片描述

A. 删除掉标注3位置的one.fly( )
B. 标注1的Animal one=new Bird()修改为Animal one=new Animal()
C. 删除掉标注2位置的one.eat( )
D. 标注1的Animal one=new Bird()修改为Bird one=new Animal()

C
下列关于instanceof说法不正确的是
A. instanceof 的返回值为true和false
B. instanceof可以用来判断对象是否可满足某个特定类型
C. 可以通过“A instanceof B"表示 A 类可以转型为B类
D. instanceof可放在if语句的条件表达式中

A
已知父类Person,子类Man。判断类Person的对象person1是否满足类Man的实例特征,正确的语句为
在这里插入图片描述

A. if (person1 instanceof Man)
B. if (man1 instanceof Person)
C. if (Person instanceof man1)
D. if (Man instanceof person1)

B
在Java中,多态的实现不仅能减少编码的工作量,还能大大提高程序的可维护性及可扩展性,那么实现多态的步骤包括以下几个方面除了
A. 子类重写父类的方法
B. 子类方法设置为final类型
C. 定义方法时,把父类类型作为参数类型;调用方法时,把父类或子类的对象作为参数传入方法
D. 运行时,根据实际创建的对象类型动态决定使用哪个方法

B
下面代码运行测试后,出现的结果是
在这里插入图片描述

A. 编译错误,错误位置在第一行
B. 编译错误,错误位置在第二行
C. 第一行和第二行都运行成功,输出结果为
儿子
女儿
D. 编译成功,但运行报错,错误位置在第二行

AD
下面代码怎么修改可以编译时不报错(多选)
在这里插入图片描述

A. 在位置一处将SpeedBike类设为抽象类,同时将位置2处的speedup也设为抽象方法
B. 将位置一中的public改为final
C. 将位置二中speedup()方法改为抽象方法
D. 将位置二中speedup()方法中加入方法的实现

B
下列选项中,关于Java的抽象类和抽象方法说法不正确的是
A. 抽象类和抽象方法都通过abstract关键字来修饰
B. 抽象类中必须包含抽象方法
C. 抽象方法只有方法声明,没有方法实现
D. 子类如果不重写父类所有的抽象方法,则必须设置为抽象类
二、编程

应用继承和多态的思想,编写动物类,成员方法是动物叫声。写三个具体的类(猫、狗、羊),它们都是动物类的子类,并重写父类的成员方法。编写测试类,随机产生三种具体动物,调用叫声这个方法。
程序参考运行效果如图所示:
在这里插入图片描述

任务分析:

  1.  定义一个父类Animal类
    

属性:kind(种类)
方法:创建带参(kind为参数)构造方法
创建cry():void方法
2. 编写三个具体的子类Cat类、Dog类、Sheep类
分别重写父类中的 cry() 方法,输出信息分别为
Cat类:小猫的叫声:喵喵喵~~~
Dog类:小狗的叫声:汪汪汪~~~
Sheep类:小羊的叫声:咩咩咩~~~
3. 编写测试类,首先生成长度为5的父类对象数组,然后通过循环依次向数组中存入数据,现设定存储规则为:
a) 每次随机产生一个0~2的正整数
b) 若数值为 0,则生成一个 Cat 类的对象,存入数组
c) 若数值为 1,则生成一个 Dog 类的对象,存入数组
d) 若数值为 2,则生成一个 Sheep 类的对象,存入数组
最后循环输出数组成员,并分别调用 cry() 方法。

public class Animal {
	private String kind;
	public Animal(String kind) {
		this.setKind(kind);
	}
	
	public Animal(){
	}
	public String getKind() {
		return kind;
	}
	public void setKind(String kind) {
		this.kind = kind;
	}
	// 创建cry():void方法
	public void cry(){
		System.out.println("叫声");
	}
	
	
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java多态指的是同一个方法名可以根据不同的对象调用出不同的行为。具体来说,多态是一种面向对象编程的特性,实现多态的方式主要有两种:方法重载和方法覆盖。方法重载指的是在一个类中定义多个同名方法,但这些方法有不同的参数列表,编译器会根据参数列表的不同选择合适的方法进行调用。方法覆盖指的是子类重父类的方法,使得在使用父类对象调用该方法时,实际调用的是子类中的方法。 多态的好处在于,它可以提高代码的灵活性和可扩展性。通过多态,我们可以为不同的对象提供不同的行为,从而使得程序更加具有扩展性。此外,多态还可以让程序的调用更加简洁、清晰,提高了代码的可读性和可维护性。 下面是一个简单的Java多态的例子: ```Java class Animal { public void makeSound() { System.out.println("动物发出声音"); } } class Cat extends Animal { public void makeSound() { System.out.println("猫发出“喵喵”的声音"); } } class Dog extends Animal { public void makeSound() { System.out.println("狗发出“汪汪”的声音"); } } public class PolymorphismExample { public static void main(String[] args) { Animal animal1 = new Animal(); Animal animal2 = new Cat(); Animal animal3 = new Dog(); animal1.makeSound(); // 动物发出声音 animal2.makeSound(); // 猫发出“喵喵”的声音 animal3.makeSound(); // 狗发出“汪汪”的声音 } } ``` 在上面的例子中,Animal是一个父类,Cat和Dog是Animal的子类。Animal类中定义了一个makeSound()方法,Cat和Dog类分别重了这个方法。在main()方法中,我们创建了三个Animal类型的对象,并分别调用它们的makeSound()方法。由于animal2和animal3都是Animal类型的对象,但实际上它们分别是Cat和Dog类型的对象,因此在调用它们的makeSound()方法时,实际上是调用了它们各自的实现,也就是Cat类和Dog类中重的makeSound()方法。这就是Java多态的表现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值