我正在用Java编写一个程序(我认为是11)。
我有一节抽象的课:
public abstract class Homework
{
// instance variables - replace the example below with your own
private int pages;
private String type;
/**
* Constructor for objects of class Homework
*/
public Homework()
{
// initialise instance variables
pages = 0;
type = "none";
}
public void setPages(int pages)
{
this.pages = pages;
}
public int getPages()
{
return pages;
}
public abstract void createAssignment(int pages);
}和一个子类:
public class Trigonometry extends Homework
{
/**
* Constructor for objects of class Trigonometry
*/
public Trigonometry()
{
super();
}
public void createAssignment(int pages)
{
this.pages = pages;
type = "Trigonometry";
}
}我在this.pages和type的createAssignment()方法中得到了一个错误。
页面在作业中有私人访问权限。 类型在家庭作业中具有私有权限。
Trigonometry不应该从它的父类继承pages和type吗?我能做些什么来解决这个问题?
发布于 2019-03-11 13:05:57
子类不能访问private成员.
子类应该将这些成员的初始值从其构造函数传递到超类构造函数,或者可以使用public getter和setter方法从子类访问和修改成员。
public void createAssignment(int pages)
{
setPages(pages);
setType("Trigonometry");
}发布于 2019-03-11 13:16:30
在您的例子中,您似乎希望它是protected而不是private。
这里有更多详细信息:在Java中,公共、受保护、包私有和私有包之间有什么区别?
发布于 2019-03-11 14:25:01
因为私有实例变量只能在创建的类中访问。如果创建子类,则需要利用受保护的实例变量。所以你要么必须公开你的变量,要么保护你的变量。
https://stackoverflow.com/questions/55102445
复制相似问题