为什么静态函数中不能访问非静态成员?而我这代码可以 30
我知道我是传入了引用,但是自己写的代码还是没有读懂求大神每句帮忙解释下。publicclassTest{inta=1;Test(inta){this.a=a;}publi...
我知道我是传入了引用,但是自己写的代码还是没有读懂 求大神每句帮忙解释下。
public class Test{
int a = 1;
Test(int a){
this.a = a;
}
public static void ask(Test x){
x.say();
}
public void say(){
System.out.println("a="+a);
}
public static void main(String[] args){
Test c = new Test(2);
c.ask(c);
}
} 展开
public class Test{
int a = 1;
Test(int a){
this.a = a;
}
public static void ask(Test x){
x.say();
}
public void say(){
System.out.println("a="+a);
}
public static void main(String[] args){
Test c = new Test(2);
c.ask(c);
}
} 展开
1个回答
2015-10-04
展开全部
本来“静态函数中不能访问非静态成员”就是 为了让规则简单而失去了重要的细节,以至于从正确走向错误 的陈述。
缩句:本来“静态函数中不能访问非静态成员”就是错误的陈述。
非静态函数(面向对象中称为“方法”method)以 a.f(blahblah) 的方式调用,其中 a 代表一个对象,方法 f 可以用访问(读取和修改) a 的成员。静态函数通常以 Ty.f(blahblah) 的方式调用,其中 Ty 是类,因为点号的左边没有对象,所以不能访问“根本不存在”的对象的成员。
缩句:本来“静态函数中不能访问非静态成员”就是错误的陈述。
非静态函数(面向对象中称为“方法”method)以 a.f(blahblah) 的方式调用,其中 a 代表一个对象,方法 f 可以用访问(读取和修改) a 的成员。静态函数通常以 Ty.f(blahblah) 的方式调用,其中 Ty 是类,因为点号的左边没有对象,所以不能访问“根本不存在”的对象的成员。
追问
别复制好吗?
追答
打了这么多字,被说成是复制的。换你会是什么心情
Storm代理
2023-08-29 广告
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询