为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的子类不继承其超类的私有实例变量?

为什么我的子类不继承其超类的私有实例变量?

翻阅古今 2022-08-03 16:44:45
我正在用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.pagestypecreateAssignment()页面在家庭作业中具有私有访问权限类型在家庭作业中具有私有访问权限难道不应该继承和从其父类继承吗?我该怎么做才能解决这个问题?Trigonometrypagestype
查看完整描述

4 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

private子类无法访问成员。


子类应将这些成员的初始值从其构造函数传递到超类构造函数,或者您可以使用 getter 和 setter 方法来访问和修改子类中的成员。public


public void createAssignment(int pages)

{

    setPages(pages);

    setType("Trigonometry");

}


查看完整回答
反对 回复 2022-08-03
?
慕仙森

TA贡献1827条经验 获得超7个赞

私有意味着某些内容只能在类内部访问,而在其他任何地方都无法访问,即使在子类中也是如此。您期望的行为可以通过使用“受保护”关键字而不是“私有”来实现。如


protected int pages; 

而不是


private int pages;

我认为关于公共隐私和保护的另一个问题将有所帮助。


David S.和Drew的回答:


官方教程可能对您有所帮助。


            │ Class │ Package │ Subclass │ Subclass │ World

            │       │         │(same pkg)│(diff pkg)│ 

────────────┼───────┼─────────┼──────────┼──────────┼────────

public      │   +   │    +    │    +     │     +    │   +     

────────────┼───────┼─────────┼──────────┼──────────┼────────

protected   │   +   │    +    │    +     │     +    │         

────────────┼───────┼─────────┼──────────┼──────────┼────────

no modifier │   +   │    +    │    +     │          │    

────────────┼───────┼─────────┼──────────┼──────────┼────────

private     │   +   │         │          │          │    


 + : accessible         blank : not accessible


查看完整回答
反对 回复 2022-08-03
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

在您的情况下,似乎您希望它代替 。protectedprivate



查看完整回答
反对 回复 2022-08-03
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

因为私有实例变量只能在创建它们的类中访问。如果创建子类,则需要利用受保护的实例变量。因此,您必须公开变量或最好受到保护。


查看完整回答
反对 回复 2022-08-03
  • 4 回答
  • 0 关注
  • 76 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信