如果一个类有同步的方法,它的子类是否也具有相同的同步方法,无论是简单地继承还是被子类覆盖?
具体说来
-
旧版
Vector
具有同步的方法,Stack
是Vector
的子类。Stack
也有同步方法吗? -
旧版
Hashtable
具有同步的方法,Properties
是Hashtable
的子类。Properties
也有同步方法吗?
我问题的动机来自旧集合"堆栈"和"属性"的替代品是什么?
谢谢。
如果一个类具有同步方法,那么它的子类是否也具有相同的同步方法,无论是简单地继承还是被子类覆盖?
来自超类的synchronized
方法可以在子类中作为非synchronized
方法重写,反之亦然。
如果子类不重写synchronized
方法,而只是继承它,则该方法将作为synchronized
方法按原样继承。
我想知道我们是否需要找到同步替代品 对于堆栈和属性
Stack
和Properties
是线程安全的类,因为它们的大多数方法都是synchronized
的(包括从Vector
/Hashtable
继承的方法)。虽然,这仍然不能保护它们在多线程上下文中被错误地使用。
子类从其超类继承所有成员(字段、方法和嵌套类)。构造函数不是成员,因此它们不被子类继承,但可以从子类调用超类的构造函数。
但是,子类不会继承其父类的私有成员。但是,如果超类具有用于访问其私有字段的公共或受保护方法,则子类也可以使用这些方法
所以是的,同步方法由子类继承。您可以通过javadoc了解更多细节。