静态代码块中创建的对象调用的属性是静态属性吗?

静态代码块中创建的对象调用的属性是静态属性吗?

static{

Cat temp=new Cat();

temp.name="xiaopang";

private int ip=10;

}

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

非常抱歉,这里是老师说错了,静态代码块儿中,不能使用this调用属性name。

不过可以通过对象,调用类的属性,静态的非静态的都可以。

http://img1.sycdn.imooc.com//climg/5c9209c90001e98303970159.jpg

http://img1.sycdn.imooc.com//climg/5c920a590001e88604760295.jpg

所以不能通过判断在静态代码块儿中通过对象调用的属性就是静态属性。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


好帮手慕阿莹 2019-03-20 16:59:38

这个不一定呦,是否是静态属性,要看定义这个属性的时候,是否是用static定义的了。

比如:

public static String name;就是静态属性  public  String name; 就是非静态属性。

不过,如果是在静态代码块儿中调用本类的属性,如果该属性是静态属性,那么就可以直接调用,例如:this.name;  如果是通过创建对象调用的时候,这个属性是静态的或者非静态的都可以被调用。

所以,是否是静态属性不在与是否是在静态代码块儿中调用的,而是定义这个属性的时候定义的

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 呆瓜一号 #1
    之前学过的静态引用不能调用非静态属性和方法和this,为什么静态代码块中可以调用this.name?
    2019-03-20 17:16:00
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师