学生学号
0121010680519
实验课成绩
武汉理工大学
学生实验报告书
实验课程名称 Java修饰符的使用说明     
开 课 学 院 计算机科学与技术学院
学 生 姓 名谷鹏
学生专业班级软件所以SY001班
2012   —  2013 学年第一学期
JAVA修饰符:
1类的修饰符:
类的修饰符可分为:可访问控制符和非访问控制符两种。
可访问控制符是:公共类修饰符 public
非访问控制符有:抽象类修饰符 abstract ;最终类修饰符 final
1)公共类修饰符 public : Java 语言中类的可访问控制符只有一个: public 即公共的。每个 Java 程序的主类都必须是 public 类作为公共工具供其它类和程序使用的应定义为 public 类。
2 )抽象类修饰符 abstract :凡是用 abstract 修饰符修饰的类,被称为抽象类。所谓抽象类是指这种类没有具体对象的一种概念类。这样的类就是 Java 语言的 abstract 类。
3 )最终类修饰符 final :当一个类不可能有子类时可用修饰符 final 把它说明为最终类。被定义为 final 的类通常是一些有固定作用、用来完成某种标准功能的类。
4 )类缺省访问控制符:如果一个类没有访问控制符,说明它具有缺省的访问控制符特性。此时,这个类只能被同一个包中的类访问或引用。这一访问特性又称为包访问性。
2 .域的控制修饰符也分为:可访问控制符和非访问控制符两类。
可访问控制符有 4 种:公共访问控制符: public ;私有访问控制符: private ;保护访问控制符: protected ;私有保护访问控制符: private protected
非访问控制符有 4 种:静态域修饰符: static ;最终域修饰符: final ;易失 ( 共享 ) 域修饰符: volatile ;暂时性域修饰符: transient。(这里主要讨论static和final)
1 )公共访问控制符 public :用 public 修饰的域称为公共域。如果公共域属于一个公共类,则可以被所有其它类所引用。由于 public 修饰符会降低运行的安全性和数据的封装性,所以一般应减少 public 域的使用。
2 )私有访问控制符 private :用 private 修饰的成员变量 ( 域 ) 只能被该类自身所访问,而不能被任何其它类 ( 包括子类 ) 所引用。
3 )保护访问控制符 protected :用 protected 修饰的成员变量可以被三种类所引用:①该类自身;②与它在同一个包中的其它类;③在其它包中的该类的子类。使用修饰符 protected 的主要作用是允许其它包中它的子类来访问父类的特定属性。
4 )私有保护访问控制符 private protected :用修饰符 private protected 修饰的成员变量可以被该类本身或该类的子类两种类访问和引用。
5 )静态域修饰符 static :用 static 修饰的成员变量仅属于类的变量,而不属于任何一个具体的对象,静态成员变量的值是保存在类的内存区域的公共存储单元,而不是保存在某一个对象的内存区间。任何一个类的对象访问它时取到的都是相同的数据;任何一个类的对象修改它时 , 也都是对同一个内存单元进行操作。
6 )最终域修饰符 final :最终域修饰符 final 是用来定义符号常量的。一个类的域 ( 成员变量 ) 如果被修饰符 final 说明,则它的取值在程序的整个执行过程中都是不变的。
3 .方法的控制修饰符也分为:可访问控制符和非访问控制符两类。
可访问控制符有 4 种:公共访问控制符: public ;私有访问控制符: private ;保护访问控制符: protected ;私有保护访问控制符:private protected.
非访问控制符有 5 种:抽象方法控制符: abstract 静态方法控制符: static ;最终方法控制符: final ;本地方法控制符: native ;同步方法控制符:synchronized.
1 )抽象方法控制符 abstract :用修饰符 abstract 修饰的方法称为抽象方法。抽象方法是一种仅有方法头,没有方法体和操作实现的一种方法。
2 )静态方法控制符 static :用修饰符 static 修饰的方法称为静态方法。静态方法是属于整个类的类方法;而不使用 static 修饰、限定的方法是属于某个具体类对象的方法。由于 static 方法是属于整个类的,所以它不能操纵和处理属于某个对象的成员变量,而只能处理属于整个类的成员变量,即 static 方法只能处理 static 的域。
3 )最终方法控制符 final :用修饰符 final 修饰的方法称为最终方法。最终方法是功能和内部语句不能更改的方法,即最终方法不能重载。这样,就固定了这个方法所具有的功能和操作,防止当前类的子类对父类关键方法的错误定义,保证了程序的安全性和正确性。所有被 private 修饰符限定为私有的方法,以及所有包含在 final 类 ( 最终类 ) 中的方法,都被认为是最终方法。
下面简介一下几个示例修饰符的运行结果:
1.示例:见两个包pkg1、pkg2,在pkg1里面建一个public类型的function类,作为功能类,
里面含有一个公共类的成员变量和成员函数,再在同一个包中,建一个ClassA类,访问function中的方法和变量。在pkg2中建一个ClassB类,引入pkg1,直接访问里面的成员变量。再建一个ClassC类,作为function的子类,调用从父类中继承的变量和方法。
运行结果如下图:
程序见附录1.1.4
2.建立一个用final修饰的Withoutcld类,有一个私有成员变量,一个访问其变量的成员函数。在主函数中通过对象直接访问,或访问其方法。
运行结果如下图:
  程序见附录1.2.
3.建立两个包fangctl和fangying,在fanngctl中建立父类SuperCls里面含有public、protected、private、defult四类成员变量,同时在建立相应类型的方法访问对应的变量。在fangying包中建立子类的对象,分别调用其中的public和protected变量和方法。
  运行结果如下:
  程序见附录2.1。
4. 构建一个StaCls的类,甚至一个静态成员变量count并初始化,再利用成员函数访问。在主函数中构造类的不同对象,分别用对象改变类中静态成员变量的值,输出,验证其结果
程序结果如下:
  程序见附录2.3.
5. 建立两个包fangwen和addition,在fangwen中建立父类ConCls的类,分别设置public、private、protected、defult,四种类型的方法。在主函数中调用私有的方法。在addition包中,先建立一个testpupr类,引入ConCls类,建立起对象,调用其中的public方法。在建立一个ConCls的子类,调用里面的public和protected方法。
运行结果如下:
程序见附录3.1.
6.在包ficont中建立一个fiCls的父类,里面存在三个成员方法,分别为public、private、final。在包fying中建立父类的子类Fchild,创建对象调用继承的public的方法
  运行结果如下:
  程序见附录3.4.
7.建立一个Integer类的对象i,对象i的整数初值为25.分别调用i中的三个方法,实现了取对象中的整数值、将对象中的整数只取出并转化成浮点数及字符串。然后用静态方法测试。将方法参数的字符串“100”转化为整数100;将作为方法参数的整数1002转换为字符串“200”;然后,首先调用类方法valueOf返回一个Integer对象(内含整数100),然后再调用对象方法intValue返回该对象所封装的整数值,并乘以2已验证它的数据类型。最后输出Integer类的两个静态域的值。
运行结果如下:
  程序见附录3.3.
附录:
1.1:
1)package pkg1;
publicclass function {
    public String puVar;
    public function(String puVar) {
        super();
        this.puVar = puVar;
    }
    publicvoid print(){
        System.out.println("I am a public function"+"\n");
    }
}
2)package pkg1;
publicclassClassA {
    /**
    * @paramargs
    */
    publicstaticvoid main(String[] args) {
        // TODO Auto-generated method stub
functionfu=new function("tongpack");
System.out.println(fu.puVar);
fu.print();
    }
}
3)package pkg2;
import pkg1.*;
publicclassClassB {
    publicClassB() {
        // TODO Auto-generated constructor stub
    }
    /**
    * @paramargs
    */
    publicstaticvoid main(String[] args) {
        // TODO Auto-generated method stub
function fu2=new function("another pack");
System.out.print(fu2.puVar);
    }
}
4)package pkg2;
import pkg1.function;
publicclassClassCextends function {
    publicClassC(String puVar) {
        super(puVar);
java valueof        // TODO Auto-generated constructor stub
    }
    /**
    * @paramargs
    */
    publicstaticvoid main(String[] args) {
        // TODO Auto-generated method stub

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。