有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java中C++ OOP指针的技巧

<>我是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) 个答案

  1. # 1 楼答案

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

    因此,在Java中,您的代码如下所示:

    class Parent {
        private Kid kid;
        public Parent() {
            kid = new Kid(this);
        }
    }
    
    class Kid {
        private Parent parent;
        public Kid(Parent p) {
            parent = p;
        }
    }
    
  2. # 2 楼答案

    这在Java中很容易。对象类型的所有Java变量都是引用。因此,孩子可以有一个引用父对象的父字段

    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.
        }
    }
    
  3. # 3 楼答案

    在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;
    };