public class D{
public static void main(String[] args){
A c=new A();
c.print();
}
}
class A{
int a=1;
int b=2;
A(){
this(a,b);
}
A(int a,int b){
this.a=a;
this.b=b;
}
void print(){
System.out.println(a+","+b);
}
}
如果把A类中的ab定义为static的就可以,这又是为什么?
java中this调用构造方法后面为什么不可以放已经定义好的变量
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
8条回答 默认 最新
- Brankily 2015-07-17 04:12关注
static的成员变量表示是类所有,这个类的所有对象(实例)均共有,任何一个对象改变这个static变量之后,其他对象去取的时候,就取到改变后的。
没有使用static修饰的成员变量是每个对象都有自己专属的一份,只能自己去访问,其他对象访问不了。理解上面的概念之后,回到楼主的问题上。
有用static修饰a、b,按楼主的写法,会报错,因为拿自己的“专属”的属性来构造自己,是没有意思的。但如果修饰为static,这就不在是专属了,是大家共有。所以你在用static成员变量当参数去构造对象的之前,属性值可能已被改变。而不再是默认的值,这是有意义的。
这就是为什么static的不报错,而非static的报错原因。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 名为“Product”的列已属于此 DataTable
- ¥15 安卓adb backup备份应用数据失败
- ¥15 eclipse运行项目时遇到的问题
- ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
- ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
- ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
- ¥50 成都蓉城足球俱乐部小程序抢票
- ¥15 yolov7训练自己的数据集
- ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
- ¥15 电力市场出清matlab yalmip kkt 双层优化问题