一、选择题
1.关于继承的说法正确的是()。正确答案: A 你的答案: B (错误)
A.子类将继承父类所有的数据域和方法。
B.子类将继承父类的其可见的数据域和方法。
C.子类只继承父类public方法和数据域
D.子类只继承父类的方法,而不继承数据域
解释:
在一个子类被创建的时候,首先会在内存中创建一个父类对象,然后在父类对象外部放上子类独有的属性,两者合起来形成一个子类的对象。所以所谓的继承使子类拥有父类所有的属性和方法其实可以这样理解,子类对象确实拥有父类对象中所有的属性和方法,但是父类对象中的私有属性和方法,子类是无法访问到的,只是拥有,但不能使用。就像有些东西你可能拥有,但是你并不能使用。所以子类对象是绝对大于父类对象的,所谓的子类对象只能继承父类非私有的属性及方法的说法是错误的。可以继承,只是无法访问到而已。
二、简答题
1.sleep()和wait()的区别?
答:其一,sleep()是Thread类中的方法,而wait()则是Object类中的方法。
其二, sleep()方法导致了程序暂停,但是他的监控状态依然保持着,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。
其三,wait()方法会导致线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。
注意是准备获取对象锁进入运行状态,而不是立即获得
2.Lock和synchronized的异同?
相同点:
都可以使多个线程实现同步,Lock能完成synchronized所实现的所有功能。
不同点:
1)lock是接口,而synchronized是关键字
2)Lock有比synchronized更精确的线程语义和更好的性能。 synchronized如果出现异常就会扔掉锁(释放锁);l oc