我有两个不同包的亲子班。我正在重写受保护类型的方法。我想访问子类中的超类保护方法。
考虑以下代码:
package package1;
public class Super
{
protected void demoMethod()
{
System.out.println("In super method");
}
}
package package2;
import package1.Super;
public class Sub extends Super
{
@Override
protected void demoMethod()
{
System.out.println("In sub method");
}
public static void main(String[] args)
{
//code for accessing superclass demoMethod to print "In super method"
}
}
认为我是Java新手,并在main方法中提供替代comment的答案。
在子类中,使用super.demoMethod()
或从子类中完全删除它
我正在阅读这本Java SCJP的书,我偶然发现了以下内容: 但是我得到了这个错误: 那么,出什么问题了?
问题内容: 关键字授予对相同包和子类(http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html)中的类的访问权限。 现在,每个类都有一个超类(http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html)。 因此,我得出结论,即使每个类都可以访问的方法。
问题内容: 我想对此进行一些讨论,但无法推断出我的情况的答案。仍然需要帮助。 这是我的代码: 在上面的示例中,下面的一些定义似乎令人困惑: 问题: 为什么我不能从子类实例(对象)访问受保护的成员()? 问题答案: 作为声明类的子类的其他包中的类只能访问其自己的继承成员。 …但不是其他对象的继承成员。
问题内容: 这是相同问题的详细阐述版本。 我们无法访问子类(位于不同包中)的子类中的(超类的)受保护变量。我们只能访问supeclass的继承变量。但是,如果将修饰符更改为“ protected static”,那么我们也可以访问超类的变量。为什么会这样呢? 这是我试图解释的相同代码段。 以上行为是预期的。但是我的问题是,如果我们将超类实例变量“ a”的访问修饰符更改为“保护静态”,那么我们也可以
下面是对同一问题稍加阐述的版本。 我们不能访问子类中的受保护变量(超类的),因为子类在不同的包中。我们只能访问supeclass的继承变量。但是如果我们将修饰符更改为“受保护的静态”,那么我们也可以访问超类的变量。为什么会这样? 下面是我试图解释的相同代码片段。 上述行为在意料之中。但我的问题是,如果我们将超类实例变量“a”的访问修饰符更改为“protected static”,那么我们也可以访问
问题内容: 我有两节课。 类具有受保护的方法,是的实例。 Class 与class在同一包中。 我正在尝试访问,但正在获取… 怎么了? 问题答案: 编译器应该捕获这样的错误。当您显然在运行时得到此消息时,发生了一些奇怪的事情。可能您已更改了源代码,但已完全重新编译。 另一个潜在但晦涩的问题是通过不同的类加载器加载类。即使包名称相同,从不同的类加载器加载的类也将位于不同的包中(以与由不同的类加载器加