2021/8/19错题

场景:

做题出现的问题

错题

错题描述:

下面程序的执行结果是?

	public class P {
	public static int abc = 123;
	static{
	System.out.println("P is init");
	}
	}
	
	public class S extends P {
	static{
	System.out.println("S is init");
	}
	}
	
	public class Test {
	public static void main(String[] args) {
	System.out.println(S.abc);//会输出什么?
   }
   }

选项如下:

A.		P is init<br />123

B.		S is init<br />P is init<br />123

C.		P is init<br />S is init<br />123

D.		S is init<br />123

原因分析:

属于被动引用不会出发子类初始化
子类引用父类的静态字段,只会触发子类的加载、父类的初始化,不会导致子类初始化

答案:A


错题描述2:

@Override
 面向对象程序设计方法的优点包含:
 
(多选题)选项如下 :

A 可重用性

B 可扩展性

C 易于管理和维护

D 简单易懂



原因分析:

我居然敢选D,胆子太肥了把。
这道题考察的面向对象的三大特点:
1. 封装性(可重用性)
2. 继承性(可扩展性)
3. 多态性 (易于管理和维护)

答案: A B C


错题描述3:


以下类型为Final类型的为()

A.HashMap

B.StringBuffer

C.String

D.Hashtable


原因分析:

StringBuilder , StringBuffer ,String 都是 final 修饰的,
其中String 的不可变性指的是使用字面量的方式创建d时,字符串的值是在字符串常量池中。
如果进行二次赋值,并没有改变常量池中的值,而是在常量池中创建一个新的值,变量指向新的值。
答案: B C


总结

 1 子类引用父类的静态字段,调用父类构造方法,不调用子类构造方法
 2 面向对象的封装,继承,多态
 3 String底层被final修饰,不可变性指的是字符串常量池的值
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

关于我成为程序员这档事

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值