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

我正在用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


翻阅古今
浏览 100回答 4
4回答

陪伴而非守候

private子类无法访问成员。子类应将这些成员的初始值从其构造函数传递到超类构造函数,或者您可以使用 getter 和 setter 方法来访问和修改子类中的成员。publicpublic void createAssignment(int pages){    setPages(pages);    setType("Trigonometry");}

慕仙森

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

拉丁的传说

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

一只斗牛犬

因为私有实例变量只能在创建它们的类中访问。如果创建子类,则需要利用受保护的实例变量。因此,您必须公开变量或最好受到保护。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java