亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么子類方法打印 null ?我究竟做錯了什么?

為什么子類方法打印 null ?我究竟做錯了什么?

一只甜甜圈 2023-09-27 16:55:57
為什么我的代碼將 null 作為輸出值而不是傳遞的參數?家長班級:class Language{  protected String name;  protected int numSpeakers;  protected String regionsSpoken;  protected String wordOrder;    public Language(String getName, int getNumSpeakers, String getRegionsSpoken, String getWordOrder){    this.name = getName;    this.numSpeakers = getNumSpeakers;    this.regionsSpoken = getRegionsSpoken;    this.wordOrder = getWordOrder;  }    public void getInfo(){    System.out.println(name+ " is spoken by "+numSpeakers+"  people mainly in "+regionsSpoken);    System.out.println("The language follows the word order: "+wordOrder);  }    public static void main(String[] args){    Mayan mayanLanguage = new Mayan("Ki'che'",30000);    mayanLanguage.getInfo();  }}兒童班:class Mayan extends Language {  protected String name;  protected int numSpeakers;    Mayan(String languageName,int speakers ){    super(languageName,speakers,"Central America","verb-object-subject");  }    @Override  public void getInfo() {    System.out.println(name+" is spoken by "+numSpeakers+" people mainly in Central America.");    System.out.println("The language follows the word order: verb-object-subject");    System.out.println("Fun fact: "+name+" is an ergative language.");  }}我查看了代碼并嘗試通過更改來解決它,但似乎沒有任何效果,我陷入了代碼中沒有看到的錯誤是什么。預期是:Ki'che' 有 2330000 人使用,主要分布在中美洲。該語言遵循詞序:動詞-賓語-主語 有趣的事實:Ki'che' 是一種作格語言。實際是:null 主要在中美洲有 0 人使用。該語言遵循詞序:動詞-賓語-主語 有趣的事實:null 是一種作格語言。
查看完整描述

1 回答

?
搖曳的薔薇

TA貢獻1793條經驗 獲得超6個贊

在Mayan你有領域


protected String name;

protected int numSpeakers;

刪除這些將解決您的問題。發生此問題的原因是因為當您定義上面的兩行時,您隱藏了這兩個字段,Language并且您必須從Languagelike super.name、super.numSpeakers等訪問這些字段...


您可能正在追求類似以下的內容。


public class Mayan extends Language {

    private static final String REGION = "Central America";

    private static final String WORD_ORDER = "verb-object-subject";


    public Mayan(String languageName, int speakers) {

        super(languageName, speakers, REGION, WORD_ORDER);

    }


    @Override

    public void getInfo() {

        super.getInfo();

        System.out.println("Fun fact: " + name + " is an ergative language.");

    }

}

正如加文指出的,訪問修飾符可以受到限制。如果您在程序的單個包中工作,您最終可能會得到類似的結果


Language.java


class Language {

    String name;

    private int numSpeakers;

    private String regionsSpoken;

    private String wordOrder;


    Language(String getName, int getNumSpeakers, String getRegionsSpoken, String getWordOrder) {

        this.name = getName;

        this.numSpeakers = getNumSpeakers;

        this.regionsSpoken = getRegionsSpoken;

        this.wordOrder = getWordOrder;

    }


    void getInfo() {

        System.out.println(name + " is spoken by " + numSpeakers + "  people mainly in " + regionsSpoken);

        System.out.println("The language follows the word order: " + wordOrder);

    }


    public static void main(String[] args) {

        Mayan mayanLanguage = new Mayan("Ki'che'",30000);

        mayanLanguage.getInfo();

    }

}

Mayan.java


class Mayan extends Language {

    private static final String REGION = "Central America";

    private static final String WORD_ORDER = "verb-object-subject";


    Mayan(String languageName, int speakers) {

        super(languageName, speakers, REGION, WORD_ORDER);

    }


    @Override

    void getInfo() {

        super.getInfo();

        System.out.println("Fun fact: " + name + " is an ergative language.");

    }

}


查看完整回答
反對 回復 2023-09-27
  • 1 回答
  • 0 關注
  • 110 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號