一、选择

1.下列代码的运行结果为: C

java多态布置作业题目及答案_子类


A. 我是动物

B. 编译错误

C. 我是动物

我是老虎

我是哈士奇

D. 我是动物 我是老虎 我是哈士奇

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

3.下列代码怎么修改可以使其成功运行:A

java多态布置作业题目及答案_抽象方法_02


A. 删除掉标注3位置的one.fly( )

B. 标注1的Animal notallow=new Bird()修改为Animal notallow=new Animal()

C. 删除掉标注2位置的one.eat( )

D. 标注1的Animal notallow=new Bird()修改为Bird notallow=new Animal()

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

5.已知父类Person,子类Man。判断类Person的对象person1是否满足类Man的实例特征,正确的语句为 A

java多态布置作业题目及答案_子类_03


A. if (person1 instanceof Man)

B. if (man1 instanceof Person)

C. if (Person instanceof man1)

D. if (Man instanceof person1)

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

7.下面代码运行测试后,出现的结果是 C

java多态布置作业题目及答案_父类_04


A. 编译错误,错误位置在第一行

B. 编译错误,错误位置在第二行

C. 第一行和第二行都运行成功,输出结果为

儿子

女儿

D. 编译成功,但运行报错,错误位置在第二行8.下面代码怎么修改可以编译时不报错(多选) AD

java多态布置作业题目及答案_父类_05


A. 在位置一处将SpeedBike类设为抽象类,同时将位置2处的speedup也设为抽象方法

B. 将位置一中的public改为final

C. 将位置二中speedup()方法改为抽象方法

D. 将位置二中speedup()方法中加入方法的实现

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

二、编程

1.应用继承和多态的思想,编写动物类,成员方法是动物叫声。写三个具体的类(猫、狗、羊),它们都是动物类的子类,并重写父类的成员方法。编写测试类,随机产生三种具体动物,调用叫声这个方法。

程序参考运行效果如图所示:

java多态布置作业题目及答案_抽象方法_06


任务分析:

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() 方法。

/**
 * 动物类
 * @author blue
 *
 */
public class Animal {
	private String kind;

	public String getKind() {
		return kind;
	}
	public void setKind(String kind) {
		this.kind = kind;
	}
	
	public Animal() {
		super();
	}
	public Animal(String kind) {
		super();
		this.setKind(kind);
	}
	
	public void cry(){}
}
/**
 * 猫类
 * @author blue
 *
 */
public class Cat extends Animal {
	@Override
	public void cry() {
		System.out.println("小猫的叫声:喵喵喵~~~");
	}
}
/**
 * 狗类
 * @author blue
 *
 */
public class Dog extends Animal {
	@Override
	public void cry() {
		System.out.println("小狗的叫声:汪汪汪~~~");
	}
}
/**
 * 羊类
 * @author blue
 *
 */
public class Sheep extends Animal {
	@Override
	public void cry() {
		System.out.println("小羊的叫声:咩咩咩~~~");
	}
}
import java.util.Random;

/**
 * 测试类
 * @author blue
 *
 */
public class Test {
	public static void main(String[] args) {
		Animal[] test = new Animal[5];
		Random random = new Random();
		for (int i = 0; i < test.length; i++) {
			int j = random.nextInt(3);//生成[0,3)的随机整数
			if (j == 0) {
				test[i] = new Cat();
			} else if (j == 1) {
				test[i] = new Dog();
			} else {
				test[i] = new Sheep();
			}
		}
		for (int i = 0; i < test.length; i++) {
			test[i].cry();
		}
	}
}