当构造函数具有类的类型时,它意味着什么?

时间:2013-12-23 21:58:42

标签: java class data-structures constructor

我不太清楚public Amoeba myParent;发生了什么。

根据我的理解,myParent的类型是类,我在概念上很难理解。那是什么意思?

public class AmoebaFamily {

private class Amoeba { // more control on when objects will be created because its private 

        public Amoeba (String name, Amoeba parent) // contructor with arguments 
        {
        myName = name;
        myParent = parent;
        myChildren = new Vector ();
        }
        public String myName;       // amoeba's name
        public Amoeba myParent;     // amoeba's parent
        public Vector myChildren;       // amoeba's children //array that can be resize

        public String toString () { // toString is used whenever you require to explore the constructor called value in string form
            return myName;
        }

        public Amoeba parent () { // constructor without argument just return myParent 
            return myParent;
        }

6 个答案:

答案 0 :(得分:2)

变形虫的父母是......变形虫。假设我们的新生Amoeba被称为Amy Jr.,它的父母是Amy Sr.,你会为Amoeba类型的Amy Jr.创建一个对象,并指定它的父母Amy Sr.也是一个Amoeba,它的变量myParent是和孩子一样。

如果它的父母是其他东西(我不知道它在生物学上是怎么可能的),比如Parrot,你会有这样的东西来创造一个新的变形虫,其父母是一只鹦鹉

public Amoeba (String name, Parrot parent) // contructor with arguments 
    {
        myName = name;
        myParent = parent;
        myChildren = new Vector ();
    }
    public Parrot myParent;

我希望能回答你的问题。

答案 1 :(得分:1)

这是 NOT 构造函数:

public Amoeba parent () 
{ 
    return myParent;
}

这只是一个名为parent的方法,它返回一个Amoeba对象。构造函数:

public Amoeba (String name, Amoeba parent) 
{
    myName = name;
    myParent = parent;
    myChildren = new Vector ();
}

初始化名为Amoeba的{​​{1}}实例成员。 myParent方法返回所述实例成员。

答案 2 :(得分:0)

一个类可以拥有自己类型的成员,没问题。这一直用于创建链表。

Try this

答案 3 :(得分:0)

它只是意味着通过给出变形虫及其亲本的名称来构建变形虫。它的父母恰好是另一个变形虫。就像文件系统中的文件夹有另一个文件夹作为他的父文件夹。或者一个人有两个人作为父母。

答案 4 :(得分:0)

似乎意味着每个Amoeba对象在实例化时都将构造为对同一Amoeba类型的父对象的引用......我会想象如果有这样的父子结构Amoeba对象最终将是一个没有父母的变形虫......并且在父母身上有一个空值......而其余的将在他们的父母某处调用一些变形虫对象......如果这是有意义的。

答案 5 :(得分:0)

将此视为家谱。

public class Person {
    public Person(String name, Person father, Person mother) { ... }
}

它只是意味着要实例化一个新的Amoeba,您需要先为它提供一个名称和父级。