欢迎来到天天文库
浏览记录
ID:38838763
大小:360.81 KB
页数:21页
时间:2019-06-20
《Java的非访问控制符》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、3.3Java的非访问控制符Java的非访问控制符static静态修饰符修饰属性和方法abstract抽象修饰符修饰类和方法final最终修饰符修饰类、属性和方法3.3.1静态属性、静态方法与静态初始化器static是静态修饰符。(1)静态属性被static修饰的属性不属于任何一个类的具体对象,是公共的存储单元。任何对象访问它时,取到的都是相同的数值。静态属性是类属性。当需要引用或修改一个static限定的类属性时,可以使用类名,也可以使用某一个对象名,效果相同。(2)静态方法用static修饰符修饰的方法,是
2、属于整个类的方法。例如,在PhoneCard200中如果需要修改附加费,可以定义一个静态方法setAdditory():staticvoidsetAdditory(doublenewAdd){if(newAdd>0)additoryFee=newAdd;}用static修饰的方法的含义:1)调用这个方法时应该使用类名做前缀,不用某个具体的对象名;2)该方法属于整个类,它在内存中的代码段随着类的定义而分配和装载;3)该方法不能操纵属于某个对象的成员变量,即static方法只能处理static属性。(3)静态初始化
3、器直接用static当名字、用{}包起来的一段特殊代码。与构造函数类似,完成初始化工作,但两者的区别是:静态初始化器对每个类初始化,构造函数对每个新创建的对象初始化。静态初始化器在所属的类加载入内存时由系统调用运行,构造函数则在产生新对象时由系统自动执行。静态初始化器不是方法,没有方法名、返回值和参数列表。总之,静态初始化器对整个类完成初始化操作,包括给static类成员赋初值。例TestStatic.java//测试静态属性、静态方法与静态初始化器的综合例题publicclassTestStatic{publ
4、icstaticvoidmain(Stringargs[]){PhoneCard200my200_1=newPhoneCard200(100.0);PhoneCard200my200_2=newPhoneCard200(200.5);//测试静态初始化器System.out.println("第1张200卡的卡号:"+my200_1.cardNumber);System.out.println("第1张200卡的金额:"+my200_1.balance);System.out.println("第1张200卡的
5、附加费:"+my200_1.additoryFee);System.out.println("第1张200卡的密码:"+my200_1.password);System.out.println("第2张200卡的卡号:"+my200_2.cardNumber);System.out.println("第2张200卡的金额:"+my200_2.balance);System.out.println("第2张200卡的附加费:"+my200_2.additoryFee);System.out.println("第2
6、张200卡的密码:"+my200_2.password);System.out.println("---------直接操作修改静态属性:测试静态属性");my200_1.additoryFee=0.4;//直接操作修改对象的静态属性,可以实现对类和其它同类对象同一属性的修改System.out.println("第2张200卡的附加费:"+my200_2.additoryFee);System.out.println("200卡类的附加费:"+PhoneCard200.additoryFee);System.
7、out.println("第1张200卡类的附加费:"+my200_1.additoryFee);System.out.println("------调用静态方法修改静态属性:测试静态方法");PhoneCard200.setAdditory(0.6);//调用静态方法修改类的静态属性,可以实现其所有同类对象同一属性的修改System.out.println(“修改后第1张200卡类的附加费:"+my200_1.additoryFee);System.out.println("修改后第2张200卡的附加费:"+
8、my200_2.additoryFee);System.out.println("--------测试修改密码的各种方法");my200_2.password=222;//用普通赋值法给对象的非静态属性赋值System.out.println("第2张200卡的密码:"+my200_2.password);//对该对象的非静态属性操作有效System.out.println("第1张2
此文档下载收益归作者所有