




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学 号: 0121010680229课 程 作 业课程名称JAVA语言程序设计学 院计算机科学与技术学院专 业软件工程班 级软件1002班姓 名王艳平20122013学年 第1学期Java主要修饰符的使用方法Java程序在定义类时,除了使用class关键字标识外,还可以在class之前增加若干类的修饰符限定所定义的类的特性。1 类的修饰符分为:访问控制符和非访问控制符两大类。1.1 可访问控制符是:公共类修饰符public。当一个类被声明为public时,它就具有了被其他包中的类访问的可能性。假如一个类没有访问控制符public说明,它就具有默认的访问控制特性。并且规定该类只能被同一个包中的类访问和引用,而不可以被其他包中的类使用。例如:有类如下:class work2 public work2()在guoqing包中定义了没有public修饰的class work2,其输出的结果为:在guoqing包中类guoqing2用import guoqing.work2.*引入了类work2.输出结果为: 而在另一个包mywork中定义的类jieri却不能引入类work2。会显示“the type guoqing.work2 is not visible”,说明当类为默认类型时,其他包中的类不可以引入,而同包可以。1.2非访问控制符:抽象类修饰符abstract,最终类修饰符final. 1.2.1抽象类修饰符abstract: abstract方法只有方法头的声明,后面没有大括号包含的方法体。例如:abstract voi performDial();必须注意的是所有抽象方法,都必须存在于抽象类之中。一个非抽象类中出现抽象方法是非法的。例如:正确的:错误的:抽象类可以有非抽象的方法。各子类在继承了父类的抽象方法之后,再分别用不同的语句和方法体来重新定义它,形成若干名字相同,返回值相同,参数列表也相同,目的一致但是具体实现有一定差别的方法。例如:电视机是一个抽象类,但是黑白电视机和彩色电视机继承了它的特点,把电视机定义为abstract类,并且定义一个抽象方法:abstract void perform();两个子类分别重新定义。最后输出结果为:1.2.2 最终类修饰符final: 在方法前(成员函数),该方法不可以被覆盖; 在类前,该类不能有子类; 初始化常量后不能被改变例:1、public class work public work() public final void show()System.out.println(This is father.);class son extends workpublic son()public void show()System.out.println(This is son);会出现“can not override the final method from work”的提示错误。2.域的控制修饰符也分为:可访问控制符和非访问控制符两类。2.1可访问控制符 2.1.1公共访问控制符:public 用 public 修饰的域称为公共域。如果公共域属于一个公共类,则可以被所有其它类所引用。由于 public 修饰符会降低运行的安全性和数据的封装性,所以一般应减少 public 域的使用。 2.1.2私有访问控制符:private用private修饰的域和方法只能被同一个类中的成员方法所访问,而不能被任何其他类(包括子类)访问。同一个类中的不同对象是可以访问对方的private域或private方法。 2.1.3保护访问控制符:protected 类中限定为protected的成员可以被这个类本身、它的子类(包括同一个包及不同包中的子类)以及同一个包中的所有其他类来访问。 2.1.4默认访问控制符: 如果在类定义中,域和方法前没有制定访问控制符,则域和方法具有包访问性,即可以被处于同一个包中的所有类(的方法)所访问。它们被称之为“包有元”成员。用图表来表示如下公共类(public)默认类类成员访问控制符publicprotected默认privatepublicprotected默认private可以访问类成员的区域AB+CBDBBBD A:所有类B:包中的类 E: 包中 子类 C:所有子类D:本类下面举例说明上面的规则:以public类为例:假设有test1类,它里面有public、protected、 private类型的成员函数,然后分别用同包中的子类和非子类以及不同包中的类分别调用这些成员函数看情况如何:Test1类中的三个成员函数分别为:(1) 用同包中的非子类parell可调用的成员函数有:运行结果为:(2) 用同包中的子类sun可调用的成员函数有:运行结果为:(3)非同包中的类test2可调用的成员函数有:运行结果为:从这个例子我们可以看出当为public 类时,它的public类的成员可以被所有类访问,而protected类的成员可以被同包中的类以及子类访问,private类只能被本类访问。2.2 非访问控制符 2.2.1 静态域修饰符static 用static修饰的成员变量仅属于类的变量,而不属于任何一个具体的对象,静态成员变量的值是保存在类的内存区域的公共存储单元,而不是保存在某一个对象的内存区间。任何一个类的对象访问它时取到的都是相同的数据;任何一个类的对象修改它时,也都是对同一个内存单元进行操作。例如学生的学号,如果一个班的学生他们学号前几位数字都一样,就是后两位不同,那么前几位数字就可以共享,学生就是不同的对象,前几位数字设为静态域,则应用部分为:执行结果为:如果用对象s1修改n的值,那么当其他学生调用时n的值也都改变,例如改为:如上s1.n=s1.n+1;则运行结果变为:2.2.2 最终域修饰符final 最终域修饰符final是用来定义符号常量的。一个类的域(成员变量)如果被修饰符final说明,则它的取值在程序的整个执行过程中都是不变的。就以上面的例子为例:把static 改为final那么n就不可以改了,改后就会出现错误提示:3方法的控制修饰符也分为:可访问控制符和非访问控制符两类3.1可访问控制符: 3.1.1公共访问控制符:public; 3.1.2私有访问控制符:private; 3.1.3保护访问控制符:protected; 3.1.4默认访问控制符。以上的方法在前面已经仔细讲述,下面我们讨论分访问控制符。 3.2 非访问控制符: 3.2.1抽象方法abstract: 用abstract修饰的方法称为抽象方法。抽象方法是一种仅有方法头,没有方法体和操作实现的一种方法。 3.2.2 静态方法控制符static: 用修饰符static 修饰的方法称为静态方法。静态方法是属于整个类的类方法;而不使用static修饰、限定的方法是属于某个具体类对象的方法。由于static方法是属于整个类的,所以它不能操纵和处理属于某个对象的成员变量,而只能处理属于整个类的成员变量,即static方法只能处理static的域。 例如我定义了两个成员变量:然后又设置了一个静态方法分别定义它们:出现了错误,可知静态方法只能处理静态域。3.2.3 最终方法控制符final: 用修饰符final修饰分方法成为最终方法。最终方法是功能和内部语句不能更改的方法,即最终方法不能重载。这样,就固定了这个方法所具有的功能和操作,防止当前类的子类对父类关键方法的错误定义,保证了程序的安全性和正确性。所有被private修饰符限定为私有的方法,以及所有包含在final类(最终类)中的方法,都被认为是最终方法。 例如父类parent为:其中有一个final方法show();然后再定义一个子类,同样有方法show();则结果为:可看出,当重载父类的final函数show()时,出现了出错提示。3.2.4 本地方法控制符:native用修饰符native修饰的方法称为本地方法。为了提高程序的运行速度,需要用其他的高级语言书写程序的方法体,那么该方法可定义为本地方法用修饰符native来修饰。由于native的方法的方法体使用其他语言再看程序外部写成,所以所有的native方法都没有方法体,而用一个分号代替。3.2.5 同步方法控制符:synchronized 如果synchronized修饰的方法是一个类方法(即static的方法),那么在该方法被调用执行前,将把系统类class中对应当前类的对象加锁; 如果synchronized修饰的是一个对象的方法(未用static 修饰的方法),则这个方法在被调用执行前,将把当前对象加锁。 4注意事项:需要注意有些修饰符不能同时使用,下面是一些修饰符混合使用是需要注意的问题:(1) abstract不能与final并列修饰同一个类。(2) abstract不能与private、static、final或native并列修饰同一个方法。(3) abstract类中不能有private的成员(包括域和方法)。(4) abstract方法必须在abstract类中。(5) static方法中不能处理非static的属性。附 录程序源代码.1.1 package guoqing;class work2 public work2()public void pr()System.out.println(今天是国庆节!); public static void main(String args) work2 w2=new work2(); w2.pr(); /package guoqing;import guoqing.work2.*;public class guoqing2 public guoqing2() public void pr2() System.out.println(今天很热闹!);public static void main(String args) guoqing2 g2 = new guoqing2();g2.pr2();work2 w = new work2();w.pr();1.2.1package mywork; class testabstractpublic static void main(String args)wbtv w=new wbtv();color c=new color();w.perform();c.perform(); abstract class TV abstract void perform(); class wbtv extends TV public wbtv() void perform() System.out.println(This is white-black tv.); class color extends TV public color() void perform() System.out.println(This is colorful tv.); 2.1 test1.java的源代码:package pakage1;public class test1 private int age;protected String phone;public String name;public test1(int age, String name, String phone) super();this.age = age; = name;this.phone = phone;public void show1()System.out.println(); protected void show2() System.out.println(this.phone); private void show3() System.out.println(this.age); public static void main(String args) test1 student=new test1(18,li li,1989670238); student.show1(); student.show2(); student.show3();/test2.java的源代码:package pakage2;import pakage1.test1.*;public class test2 private String adress;public test2(String adress) super();this.adress = adress;public void showtest2()pakage1.test1 t4=new pakage1.test1(18,zhao qin ,1532789064);t4.show1();System.out.println(this.adress);public static void main(String args) test2 t=new test2(湖北省武汉市武汉理工大学。);t.showtest2();/子类sun的源代码:package pakage1;public class sun extends test1private int english,math,physics;public sun(int age, String name, String phone, int english, int math,int physics) super(age, name, phone);this.english = english;this.math = math;this.physics = physics;public void show()System.out.println(english is: +this.english+n+math is: +this.math+n+physics is: +this.physics);public static void main(String args) sun s=new sun(19,wang li,16789019,88,90,78); s.show(); s.show1(); s.show2();/parell.java的源代码:package pakage1;import pakage1.test1;public class parell private int wages;public parell(int wages)this.wages=wages;public void showparell()test1 t2=new test1(20,zhao qiang,17725649); t2.show1(); t2.show2(); System.out.println(wages are:+this.wages+元);public static void main(String args) / TODO Auto-generated method stub parell p=new parell(5000); p.showparell();2.2.1 改之前的程序:package pakage1;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 3029-2025船用通风附件技术条件
- 职场情绪与压力管理专题培训
- 质量管理系统培训
- 机架人员安全培训教育
- 城市建筑排水设计重点基础知识点
- 办公家具业务培训
- 气球使用协议书
- 2024秋招北森题库数学百题
- 物品转让协议书
- 商业场所租赁扩展协议
- 计划生育选择试题及答案
- 法律文化-形考作业3-国开(ZJ)-参考资料
- 2025届东北三省四市高三第二次联考英语试卷含答案
- 2025-2030中国振动监测系统行业市场发展趋势与前景展望战略研究报告
- 《中华茶艺文化》课件
- 华为系统面试题及答案
- 主题班会:高中男女生正常交往课件
- 2025年第33批 欧盟REACH SVHC高度关注物质清单247项
- 漳州市城市规划管理技术规定
- T8联考·2025届高三下学期3月联合测评数学试卷(含答案)
- 以太网技术相关的重要考试题目试题及答案
评论
0/150
提交评论