第7章_Java语言的特性

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Java程序设计第七章Java语言类的特性22目标导航掌握控制符的使用场景掌握方法的重载掌握构造方法的概念与应用掌握静态成员与对象的应用33主要内容一、访问控制符二、方法的重载三、构造方法四、静态成员五、对象的应用44访问控制符访问控制符是一组限定类、域或方法是否可以被程序里的其他部分访问和调用的修饰符无论修饰符如何定义,一个类总能够访问和调用它自己的域和方法,但这个类之外的其他部分能否访问这个域或方法,取决于该域和方法以及它所属的类的访问控制符类的访问控制符只有一个public域和方法的访问控制符有四个:public、private、protected、privateprotected,另外还有一种没有定义专门的访问控制符的缺省情况访问控制符55访问控制符类的定义及修饰字[类的修饰字]class类名称[extends父类名称]{….}[变量修饰字]变量数据类型变量名1,变量名2[=变量初值]…;[方法修饰字]方法的返回值类型方法名称(参数1,参数2,…){…//方法的内容}方法和变量的定义及修饰字访问控制符public、private、protected、缺省、abstractfinal、static、synchronized、nativepublic、private、protected、缺省、final、static、transient、volatilepublic,缺省,abstract,final66缺省访问控制符假如一个类没有访问控制符,说明它具有缺省的访问控制特性这种缺省的访问控制权规定该类只能被同一个包中的类访问和引用,而不可以被其他包中的类使用,这种访问特性又称为包访问性通过声明类的访问控制符可以使整个程序结构清晰、严谨,减少可能产生的类间干扰和错误类内的域和方法如果没有访问控制符来限定,也具有包访问性,可以被同一个包中的其他类所访问和调用包的具体概念和使用方法将在后面介绍,简单地说,定义在同一个程序中的所有类属于一个包访问控制符7一.Java的访问控制符1.公共访问控制符public2.私有访问控制符private3.保护访问控制符protected4.私有保护访问控制符privateprotected7881、公共访问控制符publicJava的类访问控制符只有一个:public一个公共类,表明它可以被所有的其他类访问和引用这里的访问和引用指该类作为整体是可见和可使用的一个类作为整体对程序其他部分可见,并不能代表类内的所有域和方法也同时对程序的其他部分可见,前者只是后者的必要条件程序的其他部分可以创建这个类的对象、访问这个类内部可见的成员变量和调用它的可见的方法类的域和方法能否为所有其他类所访问,还要看这些域和方法自己的访问控制符如果域和方法自己的访问控制符也被声明为public,那么程序中的所有其他部分都可访问它们访问控制符991、公共访问控制符publicJava的类是通过包的概念来组织的包是类的一种松散的集合处于同一个包中的类可以不需任何说明而方便地互相访问和引用在不同包中的类,一般说来,相互之间是不可见的,当然也不可能互相引用当一个类被声明为public时,它就具有了被其他包中的类访问的可能性只要这些其他包中的类在程序中使用import语句引入public类,就可以访问和引用这个类访问控制符10101、公共访问控制符publicpublic方法是该类对外的接口部分其他类通过public方法与当前类交换信息、传递消息避免其他部分直接操作类内数据,体现数据封装思想如果一个类中定义了常用操作,希望能作为公共工具供其他的类和程序使用,则应把类本身和这些方法都定义成publicJava类库中的那些公共类和它们的公共方法每个Java程序的主类不必须是public类,可缺省。用public修饰的类的域称为公共域如公共域属于一个公共类,它可以被所有其他类所引用public修饰符会造成安全性和数据封装性下降,所以一般应减少public域的使用访问控制符11一.Java的访问控制符1.公共访问控制符public2.私有访问控制符private3.保护访问控制符protected4.私有保护访问控制符privateprotected1112122、私有访问控制符privateprivate声明那些类的私有成员,提供最高保护级别只能被该类自身所访问和修改,不能被任何其他类(包括该类的子类)来获取和引用在200电话卡类PhoneCard200中,电话卡的密码password不能允许其他的类或对象随意查看或修改,所以这个域可以声明为私有的privateintpassword;当其他类希望获取或修改私有成员时,需要借助于类的方法来实现,例如在类PhoneCard中定义方法getPassword()来获得密码,定义方法setPassword()来修改密码访问控制符13132、私有访问控制符private从而把password完全包裹保护起来,类外部只知道类内保存有密码数据,至于这个数据保存在哪个变量里,变量的名字是什么,则无法知道同时,为保证只有具备一定权限才能查看或修改密码,可在getPassword()方法和setPassword()方法中做必要的安全性检查满足一定的条件才可以获得或修改变量password的数值,从而保证私有数据的私有性访问控制符14访问控制符2、私有访问控制符private——举例App7_1.java定义私有成员,使之无法在类外被访问classCylinder//定义Cylinder类{privatedoubleradius;//将数据成员radius声明为私有的privateintheight;//将数据成员height声明为私有的privatedoublepi=3.14;//将数据成员pi声明为私有的,并赋初值doublearea(){returnpi*radius*radius;//在Cylinder类内部,故可访问私有成员}doublevolume(){returnarea()*height;//在类内可以访问私有成员height}}publicclassApp7_1//定义公共主类{publicstaticvoidmain(String[]args){Cylindervolu;volu=newCylinder();volu.radius=2.8;volu.height=-5;System.out.println(底圆半径=+volu.radius);System.out.println(圆柱的高=+volu.height);System.out.print(圆柱);System.out.println(底面积=+volu.area());System.out.println(圆柱体体积=+volu.volume());}}运行结果:错误,只能在Cylinder中访问私有成员。×15访问控制符2、私有访问控制符private——举例App7_2.java创建公共成员方法,访问类的私有成员变量classCylinder{privatedoubleradius;//声明私有数据成员privateintheight;privatedoublepi=3.14;publicvoidsetCylinder(doubler,inth)//声明具有2个参数的公共方法{//用于对私有数据进行访问if(r0&&h0){radius=r;height=h;}elseSystem.out.println(您的数据有错误!!);}doublearea(){returnpi*radius*radius;}doublevolume(){returnarea()*height;}}publicclassApp7_2//定义公共主类{publicstaticvoidmain(String[]args){Cylindervolu=newCylinder();//通过公共方法setCylinder()访问私有数据volu.setCylinder(2.5,-5);System.out.println(圆柱底面积=+volu.area());System.out.println(圆柱体体积=+volu.volume());}}运行结果:您的数据有错误!!1616setter与getter在将所有的或部分的域用private修饰,从而更好地将信息进行封装和隐藏在这样的类中,用setXXXX和getXXXX方法对类的属性进行存取,分别称为setter与getter。这种方法有以下优点属性用private更好地封装和隐藏,外部类不能随意存取和修改提供方法来存取对象的属性,在方法中可以对给定的参数的合法性进行检验只提供getXXXX方法,而不提供setXXXX方法,可以保证属性是只读的访问控制符17访问控制符setter与getterTestPrivate.java,定义Person类,其中age属性是一个私有属性,并且范围在5~20.classPerson{Stringname;privateintage;publicbooleansetAge(intnewAge){if(newAge=5&&newAge=20){age=newAge;returntrue;}elsereturnfalse;}publicintgetAge(){returnage;}}classTestPrivate{publicstaticvoidmain(String[]args){Persons1=newPerson();s1.name=张三;if(s1.setAge(20)==true){System.out.println(s1.name+年龄为+s1.getAge()+岁);}elseSystem.out.println(年龄错误!);}}运行结果:张三年龄为20岁18一.Java的访问控制符1.公共访问控制符public2.私有访问控制符private3.保护访问控制符protected4.私有保护访问控制符privateprotected1819193、保护访问控制符protected用protected修饰的成员变量可以被三种类所引用该类自身与它在同一个包中的其他类在其他包中的该类的子类使用protected修饰符的主要作用是允许其他包中的它的子类来访问父类的特定属性访问控制符20203、保护访问控制符protected不同包中的类不能使用packagetest1;publicclassABC{protectedintpro_i=5;protectedvoidshow(){System.out.println(“pro_i=”+pro_i;)}}packagetest2;classDEF{publicstaticvoidmain(Stringargs[]){ABCabc=newABC();System.out.println(“abc.pro_i=“+abc.pro_i);abc.show();}}访问控制符×21213、保护访问控制符protected不同包但是是子类packagemytest.pack;publicclassABC{protectedintpro_i=5;protectedvoidshow(){System.out.println(“pro_i=”+pro_i;)}}packagemytest2;importmytest.pack.ABC;classDEFextendsABC{publicstaticvoidmain(Stringagrs[]){DEFdef=newDEF();System.out.println(def.pro_i);def.pro_i=10;def.show();}}pro_i=5pro_i=10访问控制符22一.Java的访问控制符1.公共访问控制符public2.私有

1 / 70
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功