chp6面向对象三大特性 题目7 考点:继承、访问修饰符

该篇博客探讨了Java中关于继承和访问修饰符的问题。在`MySubClass`继承`MyClass`时,由于`value`字段默认为包访问权限,子类内部可以直接访问,导致在构造函数中`this.value=value`实际上引用的是子类自己的`value`属性,而非父类的。因此,要正确地初始化父类的`value`字段,需要将父类的`value`声明为`protected`并使用`super(value)`来调用父类构造器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

有如下代码

1) //MyClass.java

2) package corejava.chp6;

3) public class MyClass{

4) int value;

5) }

6)

7) //MySubClass.java

8) package corejava.temp;

9) import corejava.chp6.MyClass;

10) public class MySubClass extends MyClass{

11)  public MySubClass(int value){

12) this.value = value;

13)  }

14) }

选择正确答案:

A. 编译通过

B. 编译不通过,应把第12 行改成super.value = value;

C. 编译不通过,应把第12 行改成super(value);

D. 编译不通过,可以为MySubClass 增加一个value 属性

E. 编译不通过,把第4行改为protected int value; 把第12 行改为super.value = value;

解:

//考点:继承、访问修饰符
package corejava.chp6;
public class MyClass {
	int value;//默认修饰符作用范围仅限本类、同包!!!
}
package corejava.temp;

import corejava.chp6.MyClass;

public class MySubClass extends MyClass {
	//继承到了int value;
	int value;//为MySubClass 增加一个value 属性
	public MySubClass(int value) {
		this.value = value;//找本类中的value属性,不认继承到的
	}
}
/*选择正确答案:
falseA. 编译通过 
falseB. 编译不通过,应把第7行改成super.value = value;
falseC. 编译不通过,应把第7行改成super(value);
falseD. 编译不通过,可以为MySubClass 增加一个value 属性//不严谨,如果说增加int类型的value是正确的
tureE. 编译不通过,把父类第3行改为protected int value; 把第12 行改为super.value = value;
*/

答:

falseA. 编译通过 
falseB. 编译不通过,应把第7行改成super.value = value;
falseC. 编译不通过,应把第7行改成super(value);
falseD. 编译不通过,可以为MySubClass 增加一个value 属性//不严谨,如果说增加int类型的value是正确的
tureE. 编译不通过,把父类第3行改为protected int value; 把第12 行改为super.value = value;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值