黑马程序员技术交流社区
标题:
主函数中的this问题
[打印本页]
作者:
雨过山更翠
时间:
2014-12-1 20:53
标题:
主函数中的this问题
程序中主函数this和对象引用调用变量,出现不同结果,问什么呢?
class Super
{
int i;
//父类带参构造函数
public Super(String a)
{
System.out.println('A');
i = 1;
}
//父类空参构造函数
Super()
{
System.out.println('B');
i+=2;
}
}
class Test extends Super
{
//子类带参构造函数,首句隐式含有父类空参构造方法
Test(String a)
{
System.out.println('C');
i = 5;
}
public static void main(String[] args)
{
Super s= new Test("A");
//下面句子编译出错,静态函数中引用非静态变量。
//this.i = 4;
//下面正常编译
s.i = 4;
System.out.println(s.i);
}
}
复制代码
作者:
大大的心
时间:
2014-12-1 21:54
this代表的是本类的对象。你说的this是在主函数中的,而主函数中有i吗??没有。
作者:
a371166028
时间:
2014-12-1 22:07
this.i都没有定义,所以编译肯定是错的. 而s.i在父类是有定义了的,所以是可以编译通过. 这些事细节,注意一下就没事了.
作者:
SpiderManZZH
时间:
2014-12-1 22:14
this代表的是本类的对象,在主函数中,代表的就是主函数的本类对象;编译出错,显示,静态函数中引用非静态变量,是因为主函数是静态函数,静态函数是静态成员,它的定义是随着类的加载而加载,在对象定义前就存在。
作者:
雨过山更翠
时间:
2014-12-1 22:37
SpiderManZZH 发表于 2014-12-1 22:14
this代表的是本类的对象,在主函数中,代表的就是主函数的本类对象;编译出错,显示,静态函数中引用非静态 ...
正如你说主函数是静态的,使用主函数不需要创建对象,this代表什么
作者:
kane
时间:
2014-12-3 16:46
本帖最后由 kane 于 2014-12-3 16:48 编辑
语法规定是,静态方法里不能使用this和super关键字,只有非静态方法才能使用this和super关键字
主函数就是静态方法
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2