当前位置:  开发笔记 > 编程语言 > 正文

如何在Java中从子类创建对象

如何解决《如何在Java中从子类创建对象》经验,为你挑选了1个好方法。

所以我有这门课:

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); 

我真的很困惑.



1> Mshnik..:

是的,你刚刚开始!要绝对清楚,你不会使用类型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.所以我们不能声明rowid,但我们可以将其声明为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;
    }
 }

如果你还在寻找一种方式,包括类扩展,然后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);
    }
}

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有