Java封装三:static-静态属性;static-静态方法;static-静态代码块;代码块中的变量应用;总结;

1.static-静态属性

(1)static代表“全局”或“静态”,可以理解为:方便在没有创建对象的情况下来进行某些操作。通常用于修饰成员变量和方法,也可以形成静态代码块。      实际应用中,可将需频繁操作、通用型信息设置、公共组件封装等操作设置为“静态”

static修饰的类成员属性,是该类所有对象共享的区域;

(2)类加载时产生,类彻底销毁时,才进行资源释放;其生命周期长,即资源占用周期长,要慎用。

(3)如下的一个示例:

2.static-静态方法

static修饰方法;通常称作静态方法、类方法、全局方法;静态方法属于整个类,由类进行维护,优先于对象而存在(因此,在静态方法中无法访问同类中的非静态成员,因为非静态成员是与对象相生相伴的)

注:

(1)static不能修饰类

(2)static不可以修饰方法中的局部变量;即不允许在方法内部定义静态局部变量(即使这个方法是静态方法也不行),(static成员是属于类的,其应该修饰处于类的“根目录”的成员)

(3)在普通成员方法中:可以访问同类中的静态方法;可以访问同类中的静态属性;因为静态成员属于类,属于类的所有对象共享的,所以类的每一个具体对象都可以访问静态成员(普通成员方法是和类对象相生相伴的),所以在下面的例子中,this.eat()是可以的(但不推荐这样做,因为static修饰的东西,是更希望用户直接用类名.eat()的方式调用的)

         在静态方法中:无法访问同类中的普通成员方法;同理,在静态方法中,也无法访问同类中的非静态成员属性。即静态方法中不能直接访问非静态成员,只能直接调用静态成员(静态成员包括属性和方法);

在静态方法中不能出现this关键字;可以这样理解非静态成员是在有具体对象后,才会有的东西,所以不能访问;不具体实例化对象,而直接使用this,有点预支、预定的意思,实际对象还没有,当然也是不可以的,

如果,非得在静态方法中访问非静态成员应该这样办:

即:静态方法中不能直接访问同一个类中的非静态成员,只能直接调用同一个类中的静态成员;只能通过对象实例化后,采用“对象.成员方法”的方式访问非静态成员。。。(即,得真正有了对象之后,这些非静态成员才会依附于对象,而真正存在,此时,已经存在的静态方法才能去访问这些已经真正存在的非静态成员)

3.static-静态代码块

构造代码块

1)构造代码块在创建对象时调用,其是先于构造方法执行的;

2)在一个类中可以有多个构造代码块,对于不同的构造代码块,先出现的先执行;

当在构造代码块前加static关键字之后,构造代码块就会变成静态代码块

静态代码块:在类加载时调用,其优先于构造代码块执行。同一类可以有多个静态代码块,对于不同的静态代码块,先出现的额先执行;

即执行顺序是:静态代码块 > 构造代码块 > 构造方法 > 普通代码块

 

注:(1)无论实例化几个对象,静态代码块只执行一次,构造代码块会执行多次;

注(2):在非静态代码块,可以给普通成员属性和静态成员属性赋值;在静态代码块中,只能给静态成员属性赋值,不能直接给普通成员属性赋值;

解决办法:

注(3):静态代码块的使用场景,需要在开发过程中逐渐摸索提升。。。(普通代码块。。。)

注(4):不能在静态代码块中声明静态成员,可以声明非静态成员(因为静态成员应该直属于类,处在类的“根目录”~~~);静态代码块中声明的成员,在外部无法访问

4.代码块中的变量应用

下面两个报错的情况,可以看下报错的情况,以了解变量的作用范围。不能出现重复变量

5.总结

(1)主要是,可以在构造方法中通过调用set方法初始化对象;

(2)static成员是直属于类的,类加载时就可用了;但非static的东西是与对象相生相伴的,没有实际对象时,是不能使用访问的,(this代表当前对象,也是同理,没有实际对象时,不能在涉及static的地方瞎用);

(3)静态代码块和构造代码块在初始化类和初始化对象时的作用;(在开发中多留意这种用法的使用场景)

(4)多想想为什么会有static这种东西;

(5)多想想,关于封装的private、get、set、包、static、代码块这些的作用,理解其在程序设计中,所谓封装的含义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值