章节目录
标题 | 链接 |
---|---|
一,Java概述与Java基础 | http://t.csdnimg.cn/EBd3W |
二,Java程序流程 | http://t.csdnimg.cn/k6p9l |
三,Java数组 | http://t.csdnimg.cn/ABfr1 |
四,Java字符串 | http://t.csdnimg.cn/TrKjL |
五,类和对象基础 | http://t.csdnimg.cn/6HRem |
六,构造方法 | http://t.csdnimg.cn/M4gTk |
七,this关键字和static关键字 | http://t.csdnimg.cn/wzVJs |
八,类的继承 | http://t.csdnimg.cn/WOKIh |
九,实践课堂练习 | http://t.csdnimg.cn/k9iix |
十,封装课堂练习 | http://t.csdnimg.cn/oYl68 |
十一,多态 | http://t.csdnimg.cn/gFhx8 |
十二,抽象类 | http://t.csdnimg.cn/pYKtx |
十三,实现接口 | http://t.csdnimg.cn/vXK3v |
多态
一. 单选题(共8题,40分)
1. (单选题, 5分)对象多态性是程序中的某种现象,这种现象是( )。
A. 显示同一对象的不同字段成员,会得到不同的显示结果
B. 调用同一对象的不同方法成员,会得到不同的处理结果
C. 显示不同对象的同名字段成员,会得到不同的显示结果
D. 调用不同对象的同名方法成员,会得到不同的处理结果
正确答案: D:调用不同对象的同名方法成员,会得到不同的处理结果;
2. (单选题, 5分)Java语言重点关注的对象多态性形式是( )。
A. 同类多个对象之间的多态
B. 同一类族不同对象之间的多态
C. 不同组合类对象之间的多态
D. 组合类对象和包装类对象之间的多态
B:同一类族不同对象之间的多态;
3. (单选题, 5分)下列关于对象替换与多态的描述中,错误的是( )。
A. 对象替换与多态的目的是提高程序中算法代码的重用性
B. 对象替换与多态的基础是子类与超类之间具有相似性
C. 通过类的继承与扩展可以实现类代码的重用
D. 通过对象替换与多态可以实现类代码的重用
正确答案: D:通过对象替换与多态可以实现类代码的重用;
4. (单选题, 5分)下列关于对象替换语法规则的描述中,错误的是( )。
A. 可以将子类对象的引用赋值给超类的引用变量
B. 超类的引用变量可以引用子类对象
C. 可以将超类的引用变量直接赋值给子类的引用变量
D. 可以将超类的引用变量赋值给子类的引用变量,赋值时必须进行强制类型转换
正确答案: C:可以将超类的引用变量直接赋值给子类的引用变量;
5. (单选题, 5分)下列关于对象多态语法规则的描述中,错误的是( )。
A. 通过超类引用变量访问子类对象的成员,只能访问其中超类定义过的成员
B. 通过超类引用变量访问子类对象的成员,不能访问其中新添加的成员
C. 如果子类重写了超类成员,通过超类引用变量所访问到的是重写前的老成员
D. 如果子类重写了超类成员,通过超类引用变量所访问到的是重写后的新成员
正确答案: C:如果子类重写了超类成员,通过超类引用变量所访问到的是重写前的老成员;
6. (单选题, 5分)定义如下的超类A和子类B:
dass A{
public void fun(){…}//代码省略
}
class B extends A {
public void fun(){…}//重写fun(),代码省略
}
按如下形式创建一个子类B的对象,然后调用其方法成员fun( ):
B b = new B(): b.fun( ):
上述调用方法成员fun()的执行过程是()。
A. 执行类A定义的fun( )
B. 先执行类A定义的fun(),再执行类B重写的fun()
C. 执行类B重写的fun()
D. 先执行类B重写的fun(),再执行类A定义的fun
正确答案: C:执行类B重写的fun();
7. (单选题, 5分)使用第6题中的超类A和子类B,按如下形式创建一个子类B的对象,然后调用其方法成员fun():
A a = new B(): a.fun) );
上述调用方法成员fun( )的执行过程是( )。
A. 执行类A定义的fun()
B. 先执行类A定义的fun(),再执行类B重写的fun()
C. 执行类B重写的fun()
D. 先执行类B重写的fun(),再执行类A定义的fun()
正确答案: C:执行类B重写的fun();
8. (单选题, 5分)定义如下的超类A和子类B
class A {
public void fun(){…} //代码省略
}
class B extends A{
public void fun(){…} //重写fun(),代码省略
public void fun1(){…} //新添加fun1(),代码省略
按如下形式创建两个子类B的对象,然后分别访问其下级成员
A a = new B(): B b = new B();//创建对象
a.fun();a.fun1();b.fun();b.fun1();//访问对象的下级成员
上述访问对象下级成员的语句中,错误的是( )。
A. a.fun( ):
B. a.fun1( );
C. b.fun( );
D. b.funl( );
正确答案: B:a.fun1( );;
二. 简答题(共1题,60分)
9. (简答题, 60分)
(1)编写水果父类Fruits,包含如下成员变量和方法:
① String类型的表示水果名的成员变量 name
② 无参的构造方法,方法体内无代码。
③ 指定姓名 name 的构造方法
④ 成员变量 name 的 get 和set 方法
⑤ 如何吃的方法eat(), 该方法在控制台输出“每种水果有不同的吃法”
(2)由Fruits类派生香蕉子类Banana,该类如下:
① 增加String类型的代表水果颜色的成员变量 color。
② 增加布尔型boolean的表示水果是否成熟 的成员变量 ripe。
③ 无参的构造方法: 水果名字name 设为Banana, color 为 yellow, ripe为 true
④ 指定颜色color和是否成熟 ripe 的构造方法: 调用父类的指定水果名的构造函数,水果名字为Banana
⑤ 成员变量color的get 和 set方法
⑥ 成员变量 ripe的 get和set方法
⑦ 重写eat方法,输出“香蕉可以扒皮直接吃,也可榨汁等”
⑧ 重写toString()方法: 返回水果名字 name 、颜色 color 和是否成熟 ripe的值组成的字符串。
(3)编写测试程序:
① 在 Banana类中编写主方法 main , 该方法实现以下功能:
② 创建一个Fruits 类对象 fruits, 水果名是 “Anyone”.
③ 调用该对象的eat方法。
④ 创建一个Banana类对象ripeBanana代表熟了的香蕉, 颜色为yellow, ripe为true
⑤ 通过调用该对象的 toString方法在控制台输出水果相关信息。
⑥ 调用该对象的 eat方法。
提交程序和运行截图,需注意编码规范。
我的答案:
class Fruits {
String name;
//无参
Fruits() {
}
//name
Fruits(String name) {
this.name = name;
}
//获取
String getName() {
return name;
}
//设置
void setName(String name) {
this.name = name;
}
//吃的方法
void eat() {
System.out.println("每种水果有不同的吃法");
}
}
//香蕉子类Banana
class Banana extends Fruits {
String color;
boolean ripe;
Banana() {
super("Banana");
this.color = "yellow";
this.ripe = true;
}
//指定颜色和是否成熟的构造方法
Banana(String color, boolean ripe) {
super("Banana");
this.color = color;
this.ripe = ripe;
}
//get
String getColor() {
return color;
}
//set
void setColor(String color) {
this.color = color;
}
//is或get
boolean getRipe() {
return ripe;
}
//set
void setRipe(boolean ripe) {
this.ripe = ripe;
}
@Override
void eat() {
System.out.println("香蕉可以扒皮直接吃,也可榨汁等");
}
@Override
public String toString() {
return "Fruit name:" + getName() + ", Color:" + color + ",Ripe:" + ripe;
}
//方法
public static void main(String[] args) {
Fruits fruits = new Fruits("Anyone");
fruits.eat();
Banana ripeBanana = new Banana("yellow", true);
System.out.println(ripeBanana.toString());
ripeBanana.eat();
}
}