子类可以在Java中继承哪些方法?

时间:2011-06-13 21:04:54

标签: java inheritance

抱歉,我是Java的新手。我试图了解Java中的继承和子类/超类关系。

如果classA是classB的子类,那么classA的协议是否包含属于classA的所有方法或只有那些声明为public和package的方法?

classA的协议是否具有从其超类ClassB继承的私有方法?

6 个答案:

答案 0 :(得分:11)

首先,“继承”这个词并不是一个正确的术语。你的意思是“可见的”。

  • publicprotected始终可见
  • 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的所有protectedpublic成员和方法。在静态调用中,只能访问静态方法。

答案 5 :(得分:-1)

私有方法不会被继承。仅继承受保护,公共和默认方法。

A类将提供classA和ClassB

中公开的方法