继承和重写同步方法



如果一个类有同步的方法,它的子类是否也具有相同的同步方法,无论是简单地继承还是被子类覆盖?

具体说来

  • 旧版Vector具有同步的方法,StackVector的子类。Stack也有同步方法吗?

  • 旧版Hashtable具有同步的方法,PropertiesHashtable的子类。Properties也有同步方法吗?

我问题的动机来自旧集合"堆栈"和"属性"的替代品是什么?

谢谢。

如果一个类具有同步方法,那么它的子类是否也具有相同的同步方法,无论是简单地继承还是被子类覆盖?

来自超类的synchronized方法可以在子类中作为非synchronized方法重写,反之亦然。

如果子类不重写synchronized方法,而只是继承它,则该方法将作为synchronized方法按原样继承。

我想知道我们是否需要找到同步替代品 对于堆栈和属性

StackProperties是线程安全的类,因为它们的大多数方法都是synchronized的(包括从Vector/Hashtable继承的方法)。虽然,这仍然不能保护它们在多线程上下文中被错误地使用。

子类从其超类继承所有成员(字段、方法和嵌套类)。构造函数不是成员,因此它们不被子类继承,但可以从子类调用超类的构造函数。

但是,子类不会继承其父类的私有成员。但是,如果超类具有用于访问其私有字段的公共或受保护方法,则子类也可以使用这些方法

所以是的,同步方法由子类继承。您可以通过javadoc了解更多细节。

最新更新