抱歉,我是Java的新手。我试图了解Java中的继承和子类/超类关系。
如果classA是classB的子类,那么classA的协议是否包含属于classA的所有方法或只有那些声明为public和package的方法?
classA的协议是否具有从其超类ClassB继承的私有方法?
答案 0 :(得分:11)
首先,“继承”这个词并不是一个正确的术语。你的意思是“可见的”。
public
和protected
始终可见private
不可见答案 1 :(得分:1)
将继承所有公共和受保护的方法和变量。子类中具有相同签名的任何方法都将覆盖超类行为。子类不会继承私有方法和变量。如果在同一个pacakge和子类中,将继承默认(a.k.a包可见性级别)。
答案 2 :(得分:0)
ClassA将继承classB的所有公共和受保护方法。它不包括classB的私有方法。
答案 3 :(得分:0)
ClassA无法看到ClassB的私有方法。如果你想让ClassA访问ClassB的内部方法(没有那些方法成为ClassB的公共接口的一部分),你应该保护它们而不是私有。
答案 4 :(得分:0)
每个班级都可以使用public
标记的公共方法。
受protected
标记的受保护方法可用于子类和友好类,它们是同一个包中的类。
友好的课程可以使用友好的方法,无标记(即默认)。
私有方法仅适用于类本身。
static
标记的静态方法可供没有对象访问它们。这些是由ClassName.foo(),SuperClassName.foo()调用的(如果没有覆盖则不必要,foo()是可接受的),或者ClassName.foo()(不需要,foo()是可接受的)
只有当有一个类的对象时,动态(检查词汇???)标记为无(即默认)。例如:bar.foo(),this.foo()(不需要,foo()是可以接受的),或者super.foo()(如果没有被覆盖则不必要,可以接受foo())
由@Override
注释的Overriden方法仅可通过super.foo
因此,在ClassB的实例中,可以访问ClassA的所有protected
和public
成员和方法。在静态调用中,只能访问静态方法。
答案 5 :(得分:-1)
私有方法不会被继承。仅继承受保护,公共和默认方法。
A类将提供classA和ClassB
中公开的方法