求教!java中一个类中如何调用别的类的已经实例化后的对象

classTestDiaoYongLingWaiLeiDuiXiang1{TestDiaoYongLingWaiLeiDuiXiang2x2=newTestDiaoYon... class TestDiaoYongLingWaiLeiDuiXiang1
{ TestDiaoYongLingWaiLeiDuiXiang2 x2 = new TestDiaoYongLingWaiLeiDuiXiang2("你好");

public void show()
{

System.out.println(x2.td1); //如果我想调用td1对象的话应该怎么做呢?
System.out.println(TestDiaoYongLingWaiLeiDuiXiang2.td2);
System.out.println(x.td2);
}

}
class TestDiaoYongLingWaiLeiDuiXiang2
{ private String name ;

public TestDiaoYongLingWaiLeiDuiXiang2(String name)
{

this.setName(name);

}

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString()
{
return "你好"+getName();
}
TestDiaoYongLingWaiLeiDuiXiang2 td1 = new
TestDiaoYongLingWaiLeiDuiXiang2("td1"); /*这里为什么不用静态的修饰会报错,即使在show方法中不调 用td1,也会失败.*/

static TestDiaoYongLingWaiLeiDuiXiang2 td2 =
new TestDiaoYongLingWaiLeiDuiXiang2("td2");
}
public class TestDiaoYongLingWaiLeiDuiXiang {

public static void main(String[] args) {

TestDiaoYongLingWaiLeiDuiXiang1 x =new TestDiaoYongLingWaiLeiDuiXiang1();
x.show();
}
}

//求大神解答,
(1) 我想调用另外一个类中已经实例化的对象,只是对象本身并不是它的属性,应该怎么办呢?

(2) 为什么TestDiaoYongLingWaiLeiDuiXiang2 td1 = new
TestDiaoYongLingWaiLeiDuiXiang2("td1");
会报StackOverflowError错呢? 我只是创建一个对象而已,而且调用对象的方法show并不是static的.除了添加修饰符static TestDiaoYongLingWaiLeiDuiXiang2 td1 = new
TestDiaoYongLingWaiLeiDuiXiang2("td1") 应该如何修改呢?

(3)static TestDiaoYongLingWaiLeiDuiXiang2 td2 =
new TestDiaoYongLingWaiLeiDuiXiang2("td2");
中的 static 修饰这个实例化对象的过程有什么用呢? 如何调用这个td2呢? 类名.td2还是new 类名.td2 好像都可以,这是为什么呢?System.out.println(x2.td2==TestDiaoYongLingWaiLeiDuiXiang2.td2);结果是ture
展开
 我来答
dark19861201
2015-06-03 · TA获得超过2152个赞
知道大有可为答主
回答量:2584
采纳率:79%
帮助的人:1787万
展开全部
  1. 如果想要调用某个已经实例化的对象,那么只有把那个对象的引用传到你当前对象才可能,不然没办法,或者说你只需要那个类的方法,那你在代码里面创建一个新对象调用就好了。

  2. 你报错是因为你在对象本身创建一个自己的对象,实际上进入了死循环了,你试想一下,你每次创建TestDiaoYongLingWaiLeiDuiXiang2对象的时候,这个对象又要通过new 创建一个TestDiaoYongLingWaiLeiDuiXiang2对象,然后这个对象创建的时候又去new 一直没有穷尽,所以就把内存撑爆了。

  3. static修饰这个对象就是把对象的实例化提前了,也就是说这个对象会在jvm运行时就先加载到内存,而不是你new的时候,所有new出来的对象的这个属性都指向这一个地方,所以你无论用new还是类名.都可以访问到他,而且两种方式访问到的是同一个对象。

追问
大神啊, 很透彻啊, 在请教一下 如何把eclipse里面的原格式的代码发布到这里啊,
还有 请问可以加好友吗? 不懂的可以直接问你嘛? 你将的很透彻,我一听就懂了.
dj953690835
2015-06-03
知道答主
回答量:6
采纳率:0%
帮助的人:6322
展开全部
(1)说的挺绕,调用另外一个类中已经实例化的对象可以将该实例对象声明为全局变量即可
(2)因为不声明为静态就会每次调用时都创建一个新的对象,如此造成死锁,程序报错
(3)static 修饰的对象为静态对象,由类对象调用和由类名调用都是同一个对象;但一般习惯用类名直接调用静态成员
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式