所以我有这门课:
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); } }
问题是如何为类son创建一个对象.我必须这样调用它:
son x=new son(int id,int row);
我真的很困惑.
是的,你刚刚开始!要绝对清楚,你不会使用类型id
和row
在调用构造函数时,你只需要给出该类型的值.
所以这是错的:
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的新手,因此惯例是类具有Pronoun Case(每个单词的大写首字母)名称.因此,为您的类使用以下格式将是更好的样式:
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,并将其复制到一个新的Son:
Parent p = new Parent(4,5); Son s = new Son(p); //will have id of 4 and row of 5
值得注意的是,尽管所有这些对于学习类扩展如何工作都很好并且很好,但实际上并没有正确地使用它.通过说Son extends Parent
,你说这Son
是一种类型 Parent
,在一个家庭的小学模型中是不正确的.建模家庭的更好方法可能是:
public class Person { private Person mother; private Person father; public Person(Person mother, Person father) { this.mother = mother; this.father = father; } }
如果你还在寻找一种方式,包括类扩展,然后Man
和Woman
意义的类的扩展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); } }