此问题已在此处有答案:
Protected constructor and accessibility(5个答案)
15小时前关门了。
当试图创建父类的对象时,它有一个受保护的构造函数,我尝试使用子类引用,并能够成功创建对象。但是,当使用父类引用时,会导致编译错误。
当试图创建父类的对象时,它有一个受保护的构造函数,我尝试使用子类引用,并能够成功创建对象。但是,当使用父类引用时,会导致编译错误。
这是使用的代码:
package secondPackage;
public class AccessPra {
protected AccessPra() {
System.out.println("protected constructor");
}
}
package firstPackage;
import secondPackage.*;
public class MainClass extends AccessPra {
public static void main(String[] args) {
AccessPra obj1 = new AccessPra(); // Throwing Error
MainClass obj2 = new MainClass(); // This line is working
}
}
1条答案
按热度按时间n3h0vuf21#
因为它们在不同的包中,这与访问修饰符有关,如果你把你的类移到同一个包中,它就可以工作了!查看此表以了解访问修饰符:https://www.javatpoint.com/access-modifiers
就像这样:
如果你想要不同的包,并使用继承的保护方法,你也可以这样做:
正如您所看到的,由于主类扩展了AccessiPra,它从父类继承了方法,因此您可以在它们受到保护时使用它们。
希望有帮助!