2015-12-29 58 views
0
創建一個對象

所以我有這個類:如何從一個子類中的Java

​​

,然後我也

public class son extends parent { 
    public son(int id,int row) { 
     super(id,son); 
    } 
} 

的問題是我如何創建該類延伸父對象類班子。我必須這樣稱呼它:

son x=new son(int id,int row); 

我真的很困惑。

+0

是的,你可以調用它的方式..或者你可以使用父母的引用來引用子類的實例 – TheLostMind

+2

我真的不喜歡下殼類命名。 – OPK

+0

將類型排除在外,否則您的語法應該起作用。兒子x =新兒子(id,row); – nicomp

回答

5

是的,你只是在現場!要說得很清楚,在調用構造函數時,您不會使用idrow的類型,您只需提供該類型的值即可。

因此,這是錯誤的:

son x = new son(int 5, int 6); //Incorrect 

這是正確的:

son x = new son(5, 6); //Correct 

您也可以通過正確類型的變量,就像這樣:

int id = 5; 
int row = 6; 
son x = new son(id, row); 

而且,我剛剛注意到你寫道:

public class parent { 
    private int id; 
    private id row; 
    //.... 

代替

public class parent { 
    private int id; 
    private int row; //Note the change id --> int here 
    //.... 

如果這是一個錯字,別擔心。否則,你可能會有一個概念誤解。 id不是一種類型,但是int是。所以我們不能將row聲明爲id,但我們可以聲明它爲int。與C和朋友不同,您不能使用typedef創建類型的同義詞,因此您堅持使用基本類型(int,boolean等)。


因爲你看起來你是Java的新手,所以這個約定對於類有代詞情況(首字母大寫的第一個字母)的名字。因此,這將是更好的風格來使用你的類以下格式:

public class Parent { 
    private int id; 
    private int row; 
    public Parent(int id,int row) { 
     this.id=id; 
     this.row=row 
    } 
} 

public class Son extends Parent { 
    public Son(int id,int row) { 
     super(id,son); 
    } 
} 

public class ThisClassHasManyWordsInItAndItShouldBeFormattedLikeThis { 
    //..... 
} 

然後使建設:

Son x = new Son(5,6); 

一旦你已經構建了Parent對象像Parent p = new Parent(4,5);,有沒有辦法將p更改爲Son。這是不可能的。但是,您可以複製p到一個新的Son,你可以做一些修改類,使之更容易使這些副本:

public class Parent { 
    private int id; 
    private int row; 
    public Parent(int id,int row) { 
     this.id=id; 
     this.row=row 
    } 

    public int getId() { 
     return id; 
    } 

    public int getRow() { 
     return row; 
    } 
} 

public class Son extends Parent { 
    public Son(int id,int row) { 
     super(id,son); 
    } 

    public Son(Parent p) { 
     super(p.getId(), p.getRow()); 
    } 
} 

現在,我們可以創建一個家長,並複製它進入一個新的兒子:

Parent p = new Parent(4,5); 
Son s = new Son(p); //will have id of 4 and row of 5 

值得一提的是,雖然這一切都很好,學習類擴展是如何工作的,你不實際使用我很正確。通過說​​,你是說SonParent的一種,這在家庭的小學模型中是不正確的。一個更好的辦法,以一個家庭模式很可能是:

public class Person { 
    private Person mother; 
    private Person father; 

    public Person(Person mother, Person father) { 
     this.mother = mother; 
     this.father = father; 
    } 
} 

如果你還在尋找一種方式,包括類擴展,然後ManWoman有意義的Person類的擴展,因爲Man是類型Person。 (即所有男人都是人,不是所有人都是男人)。

public class Person { 
    private Man father; 
    private Woman mother; 

    public Person(Man father, Woman mother) { 
     this.father = father; 
     this.mother = mother; 
    } 
} 

public class Man extends Person { 
    public Man(Man father, Woman mother) { 
     super(father, mother); 
    } 
} 

public class Woman extends Person { 
    public Woman(Man father, Woman mother) { 
     super(father, mother); 
    } 
} 
+0

是的,我對Java非常陌生。感謝您爲aswer,但讓我們假設其他場景。我創建一個父對象 父x =新的父(5,6); 如何從Son創建一個對象,保持輸入相同的變量?沒有辦法讓這個對象不必放入這些變量嗎? – Jenny

+0

啊哈!不,不是直接。但你可以讓它成爲一個。我現在編輯我的答案。 – Mshnik

+0

是的,這就是我從開始時所要做的!謝謝 – Jenny

相關問題