黑马程序员技术交流社区

标题: 通过构造函数调用this参数实现类之间的成员互用,求问。 [打印本页]

作者: my_heima    时间: 2014-3-25 15:40
标题: 通过构造函数调用this参数实现类之间的成员互用,求问。
class Person1{
        int age=2;
        Person2 p2=new Person2(this);
}

class Person2{
        Person1 p1;
        public Person2(Person1 p1){
        this.p1=p1;
        }
        void say1(){
        System.out.println(p1.age);
        }
}

public class This
{
        public static void main(String[] args)
        {
                Person2 p2=new Person2();
                p2.say1();
        }
}
各路大神,求问:
上述代码,Person2我通过构造方法想将person1的实例化对象传入,然后调用Person1中的age变量,结构不知道怎么在Person1类中去写,报错了。希望指点迷津。
作者: awkflf11    时间: 2014-3-25 18:17
你想调用p1的age:

你可以这样写:Person2  继承Person1的:
class Person1{
        int age=2;
        Person2 p2=new Person2(this);
}

class Person2 expends Person1{
        Person1 p1;
        public Person2(Person1 p1){
        super.p1=p1;
        }
        void say1(){
        System.out.println(p1.age);
        }
}


然后再写
public class This
{
        public static void main(String[] args)
        {
                Person2 p2=new Person2();
                p2.say1();
        }
}



作者: my_heima    时间: 2014-3-26 09:45
awkflf11 发表于 2014-3-25 18:17
你想调用p1的age:

你可以这样写:Person2  继承Person1的:

感谢关注,如果继承的话,Person2就直接可以使用Person1中的成员了,不需要通过构造方法初始化传入Person1的对象。
作者: my_heima    时间: 2014-3-26 09:54
my_heima 发表于 2014-3-26 09:45
感谢关注,如果继承的话,Person2就直接可以使用Person1中的成员了,不需要通过构造方法初始化传入Person ...

这样可以,之前忘记在main调用p2时传入p1的参数了

class Person1{
        int age=2;
}

class Person2{
        Person1 p1;
        public Person2(Person1 p1){
        this.p1=p1;
        }
        void say1(){
        System.out.println(p1.age);
        }
}

public class This
{
        public static void main(String[] args)
        {
                Person1 p1=new Person1();
                Person2 p2=new Person2(p1);
                p2.say1();
        }
}

作者: 屋檐下的期待    时间: 2014-3-26 12:23
唉,我对this这一块,对象这一部分也晕乎乎的
作者: shi0000    时间: 2014-3-26 23:06
class Person1{         int age=2; }  class Person2{         Person2(Person1 p1){         p1=new Person1();          }         void say1(){         System.out.println(p1.age);         } }  public class This {         public static void main(String[] args)         {                 Person2 p2=new Person2();                 p2.say1();         } }




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2