如何解决子类可以在Java中继承哪些方法?
| 抱歉,我是Java的新手。我试图弄清Java中的继承和子类/超类关系。 如果classA是classB的子类,那么classA的协议是否将所有属于classA的方法或仅声明为public和package的那些方法作为特色? classA的协议可以具有从其超类ClassB继承的私有方法吗?解决方法
首先,“继承”一词不太正确。您的意思是“可见”。
public
和ѭ1always始终可见
private
不可见
默认的(也就是\“ package \”)可见性-即没有指定的可见性-仅在子类位于同一包中时可见(对于同一包中的任何类而言)
, 所有公共和受保护的方法和变量都将被继承。子类中具有相同签名的任何方法都将覆盖超类的行为。子类将不会继承私有方法和变量。如果在相同的包装中并且由子类继承,则默认值(也就是程序包可见性级别)将被继承。
, ClassA将继承classB \的所有公共方法和受保护方法。它不包括classB的私有方法。
, ClassB的私有方法对ClassA不可见。如果要让ClassA访问ClassB的内部方法(而这些方法不会成为ClassB的公共接口的一部分),则应使它们受保护而不是私有。
, 每个类都可以使用标记为“ 0”的公共方法。
标记为“ 1”的受保护方法可用于子类和友好类,它们是同一包中的类。
友好类可以使用无任何标记(即默认)的友好方法。
私有方法仅对类本身可用。
标有“ 5”的静态方法无需对象即可使用。这些可以通过ClassName.foo(),SuperClassName.foo()(如果没有被覆盖,则是不必要的,则foo()是可接受的)或ClassName.foo()(不需要,可以是foo())来调用。
仅标有动态对象(即默认值)的动态(检查vocab ???)标记才可用。例如:bar.foo(),this.foo()(不必要,可以接受foo())或super.foo()(如果没有被覆盖则不需要,可以接受foo())
用@Override
注释的覆盖方法仅可通过super.foo
使用
因此,在ClassB实例中,ClassA的所有protected
和public
成员和方法将可访问。在静态调用中,只能访问静态方法。
, 私有方法不会被继承。仅继承受保护的方法,公共方法和默认方法。
A类将提供在A类和B类中都是公共的方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。