java中的C ++ OOP指针技巧

时间:2013-05-06 16:10:55

标签: java c++ oop pointers

我是Java新手,但我对C ++有一些经验。我想用Java做一些事情,只能用C ++中的指针来完成。由于代码解释了超过一千个单词:

class Parent;
class Kid;

class Parent{
public:
    Parent();
private:
    Kid *kid;
};

class Kid{
public:
    Kid(Parent*);
private:
    Parent *parent;
};

Parent::Parent(){
    //give self
    kid = new Kid(this);
}

Kid::Kid(Parent* parent){
    //kid can now adress the class containing the instance
    parent = parent;
}

那么,这在Java中是否可行,以及如何实现?

3 个答案:

答案 0 :(得分:2)

你是正确的,在Java中没有“指针”,但在实践中,对对象的所有引用都非常类似于指针。因此,只要变量,字段或参数引用对象,它就“指向”内存中的某个特定对象。

因此,在Java中,您的代码看起来像:

class Parent {
    private Kid kid;
    public Parent() {
        kid = new Kid(this);
    }
}

class Kid {
    private Parent parent;
    public Kid(Parent p) {
        parent = p;
    }
}

答案 1 :(得分:1)

这在Java中很容易。 Object类型的所有Java变量都是引用。所以Kid可以有一个引用Parent对象的Parent字段。

public class Parent{
    private Kid kid;
    public Parent( ) {
        kid = new Kid( this );
    }
}

public class Kid {
    private Parent parent;
    public Kid( Parent p ) {
       parent = p;  // Copies the *reference* to the parent, not the object itself.
    }
}

答案 2 :(得分:1)

在java中,用new创建的每个对象实际上都是一个引用,即一个指针。 因此,只需用“新”创建所有内容,您就可以了。

public class Parent{
public Parent() { kid = new Kid(this) }
private Kid kid;
}

public class Kid{

public Kid(Parent parent){ this.parent = parent }
private Parent parent;
};