求教!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 展开
{ 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 展开
展开全部
如果想要调用某个已经实例化的对象,那么只有把那个对象的引用传到你当前对象才可能,不然没办法,或者说你只需要那个类的方法,那你在代码里面创建一个新对象调用就好了。
你报错是因为你在对象本身创建一个自己的对象,实际上进入了死循环了,你试想一下,你每次创建TestDiaoYongLingWaiLeiDuiXiang2对象的时候,这个对象又要通过new 创建一个TestDiaoYongLingWaiLeiDuiXiang2对象,然后这个对象创建的时候又去new 一直没有穷尽,所以就把内存撑爆了。
static修饰这个对象就是把对象的实例化提前了,也就是说这个对象会在jvm运行时就先加载到内存,而不是你new的时候,所有new出来的对象的这个属性都指向这一个地方,所以你无论用new还是类名.都可以访问到他,而且两种方式访问到的是同一个对象。
追问
大神啊, 很透彻啊, 在请教一下 如何把eclipse里面的原格式的代码发布到这里啊,
还有 请问可以加好友吗? 不懂的可以直接问你嘛? 你将的很透彻,我一听就懂了.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询