问一个简单的java问题

清风已醉 2015-11-06 07:24:42
package com.kang.test;
public class Test1 {

public int i;

public void init(){
i=2;

}
}




package com.kang.test;

public class Test2 extends Test1{

public static void main(String[] args) {
// TODO 自动生成的方法存根

Test1 test1=new Test1();
int a=test1.i;
System.out.println(a);
}

}
我这样在Test2里调用Test1的i变量,输出结果是0,也就是缺省值,并没有输出2。我想知道为什么。另外如果不用return的方法,如何得到正确的输出。
...全文
182 4 打赏 收藏 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
心里有座空城 2015-11-07
  • 打赏
  • 举报
回复
你只是实例化了Test1的一个变量而已,并没有调用init方法,而你定义i时默认的值是0
zhangshumin23 2015-11-07
  • 打赏
  • 举报
回复
你这样试一下: Test1 test1=new Test1(); test1.init(); int a=test1.i; System.out.println(a); 因为你的init方法是没有返回值的,创建完Test1对象用调用init()方法相当于给i赋值,下边再取出i就是2了,我也是手机打的字,楼主试下看看
清风已醉 2015-11-06
  • 打赏
  • 举报
回复
也就是说必须得用return,在调用方法的时候返回值?
  • 打赏
  • 举报
回复
i是Test1的成员变量,init()是Test1的成员方法,new Test1时会给成员变量开辟空间,并默认初始化,int类型的默认初始化为0,当你调用成员方法init的时候才会把i赋值2

51,407

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧