Java主要修饰符的作用.doc_第1页
Java主要修饰符的作用.doc_第2页
Java主要修饰符的作用.doc_第3页
Java主要修饰符的作用.doc_第4页
Java主要修饰符的作用.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java主要修饰符的作用(武汉理工大学-计算机科学与技术学院-软件工程1001班-李亚勇)1 摘要本文主要介绍Java语言中一些修饰符的用法以及作用效果,让大家对修饰符有更深一步的了解。因为修饰符在任何程序语言中都是非常重要的,因此,系统化的整理与了解有助于加深对Java的理解。2 关键字 Java,修饰符,作用,程序3 3P修饰符 3.1 public public顾名思义就是公共的,共有的意思。因此,它的继承和使用就变得很公众。Public可以用来修饰类及类中成员。修饰类方法时,分为类中的函数和主函数,修饰主函数时,说明main()是公有方法,它可以被任何方法访问,包括Java解释器。下面是一段简单的代码来说明这个问题。 public class Hello public static void main(String agrs) System.out.println(Hello everyone!); 运行截图 如果将public改为private后,运行截图 因为main()是主函数,所有程序执行的中枢,因此必须设为公有的,由此也可看出public的作用。Public修饰类中方法时,主要是用于继承。这也是面向对象语言一个很重要的特点,公有方法就是说子类可以使用这个方法,换言之成为了子类的一部分。编写个小程序:class Fu public void sc() System.out.println(Hello everyone!); class Er extends Fu public void sc2() sc(); System.out.println(Hello world!); public class Test public static void main(String agrs) Er s=new Er(); s.sc2(); 运行截图为 将Fu中的函数改为私有的之后,运行截图 Public修饰成员变量也是一样的效果,这里不再赘叙。Public修饰类时,是公共类,这里主要对比于静态类。两者的区别在于:公共类里面的方法,必须生成对象,才能被访问;而静态类里面的方法,通过类名加“.”再加方法就可以访问,换言之,方法访问方式是不一样的。下面举例说明一下。public class Hi void sc() System.out.println(Hi,ladies and gentlemen); public class Test public static void main(String agrs) Hi a=new Hi(); a.sc(); 运行结果截图 可以被同一包中的所有类访问,可以被所有子类访问,子类没有在同一包中也可以访问3.2 privatePrivate的中文意思是私有的,和public正好相反,它所修饰的类中函数对外是不可见的,只对自己可见,即使是它的子类,也同样无法直接使用它们,必须通过其他可调用的函数来间接使用它们。下面举个小例子来说明一下 class Fu private String a; Fu(String x) a=x; private void sc() System.out.println(a+is a string); public void sc2() sc(); System.out.println(Yes!); public class Te public static void main(String agrs) Fu x=new Fu(abcdefg); x.sc2(); 运行结果截图如果直接应用私有函数,会出现错误public class Te public static void main(String agrs) Fu x=new Fu(abcdefg); x.sc(); 结果截图3.3 protectdProtected是一个很特殊的修饰符,它所修饰的函数,对自己和子类是可见的,对于其他事不可见的,举个很形象的例子,protected相当于一个人的卧室,这个卧室对于自己的孩子,孙子等是开放的,可以进去,也可以使用,但是对于外人,是受保护的,是不可见的。举个小例子 class Fu protected void sc() System.out.println(This is a string); class Er extends Fu void sc2() sc(); public class Tes public static void main(String agrs) Er x=new Er(); x.sc2(); 运行截图4 package修饰符 Java中的包的出现十分有必要,设计人员利用包来划分名字空间,用于分隔类名空间,以避免类名冲突。两个包之间的方法互不相干,但是如果想用其他包中的类也是可以的,这就是程序非常有条理性,应用起来不觉的乱。 在D:Java下有包p1、p2 在p1下有S.java文件 package p1; public class S public void say() System.out.println(Hello world); 在p2下有D.java文件 package p2; import p1.S; public class D public static void main(String ar) S s=new S(); s.say(); 5 final修饰符 final修饰类的时候,代表这个类不能再派生子类,它已达到类层次中的最底层,举个例子。 final class Fu public void sc() System.out.println(This is a string); class Yb extends Fu void sc3() sc(); public class Tes public static void main(String agrs) Yb x=new Yb(); x.sc3(); 这样的话,结果就会报错用final修饰的方法不能被替换或隐藏:使用final修饰的实例方法在其所属类的子类中不能被替换(overridden);使用final修饰的静态方法在其所属类的子类中不能被重定义(redefined)而隐藏(hidden);用final修饰的变量最多只能赋值一次,在赋值方式上不同类型的变量或稍有不同:静态变量必须明确赋值一次(不能只使用类型缺省值);作为类成员的静态变量,赋值可以在其声明中通过初始化表达式完成,也可以在静态初始化块中进行;作为接口成员的静态变量,赋值只能在其声明中通过初始化表达式完成;实例变量同样必须明确赋值一次(不能只使用类型缺省值);赋值可以在其声明中通过初始化表达式完成,也可以在实例初始化块或构造器中进行;方法参数变量在方法被调用时创建,同时被初始化为对应实参值,终止于方法体(body)结束,在此期间其值不能改变;构造器参数变量在构造器被调用(通过实例创建表达式或显示的构造器调用)时创建,同时被初始化为对应实参值,终止于构造器体结束,在此期间其值不能改变;异常处理器参数变量在有异常被try语句的catch子句捕捉到时创建,同时被初始化为实际的异常对象终止于catch语句块结束,在此期间其值不能改变;局部变量在其值被访问之前必须被明确赋值。6 static修饰符 Static的用法是很多的,因为java语言中都是一个类一个类的,所以没有全局变量的概念,而static在某些时候可以充当全局变量的角色。被其修饰的变量称为静态变量。静态成员变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。 所以当静态成员变量内存非配好了后,所有的实例对象共同维护类变量,任何一个对象对实例变量的修改都会影响其他对象对该变量的修改。这就起到了全局变量的作用。举个简单的小例子。 class Tes1 private int a=0; private static int b=0; void sc() a+; b+; System.out.println(a=+a); System.out.println(b=+b); public class Tes public static void main(String agrs) Tes1 x=new Tes1(); x.sc(); Tes1 y=new Tes1(); y.sc(); Tes1 z=new Tes1(); z.sc(); 运行结果截图如下静态方法可以直接通过类名调用,任何的实例也都可以调用,因此静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法(就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法。因为static方法独立于任何实例,因此static方法必须被实现。static代码块也叫静态代码块,是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。静态代码块在类加载时仅仅执行一次,而代码块在类加载时不执行,而是在每次对象创建时都会执行,并且先于构造函数执行。为了生成对立于外部类对象的嵌套类对象,就需要将嵌套类命名为static。public class Test public class InnerClass public static class StaticInnerClasspublic StaticInnerClass() System.out.println(-静态嵌套类构造器执行。); public static String param = -静态成员变量值。; staticSystem.out.println(-静态代码块执行。); System.out.println(-代码块执行。); public static void StaticMethod()System.out.println(-静态成员方法执行。); private Test() System.out.println(-构造器执行。); public static void main(String args)Test app1 = new Test();Test app2 = new Test();System.out.println(-两个对象生成成。-); Test.StaticMethod();app1.StaticMethod();System.out.println(Test.param); System.out.println(app1.param); System.out.println(app2.param); Test.StaticInnerClass sobj = new Test.StaticInnerClass(); 运行截图 7 abstract修饰符凡是用abstract修饰符修饰的类被称为抽象类,抽象类就是没有具体对象的概念类。假设鸟是一个类,它可以派生出若干个类如鸽子,燕子,麻雀,天鹅等,那么是否存在一只实实在在的鸟,它既不是鸽子,也不是燕子或麻雀,更不是天鹅,它不是任何一种具体种类的鸟,而仅仅是一只抽象的鸟呢?肯定没有,那抽象类的作用是干什么呢?这里举个很形象的例子。假设需要向别人描述天鹅是什么,通常都会这样说,天鹅是一种脖子长长,姿态优美的候鸟。若是描述燕子,可能会说,燕子是一种长着剪刀似的尾巴,喜在屋檐下垒窝鸟;可见定义是建立在假设对方已经知道了什么是鸟的前提下,只有在被进一步问及鸟是什么时,才会具体解释说:鸟是一种长着翅膀和羽毛的卵生动物。这实际是一种经过优化了的概念组织方式:把所有鸟的共同特点抽象出来,概括形成鸟的概念;其后在描述和处理某一种具体的鸟时,就只需要简单地描述出它与其他鸟类所不同的特殊之处,而不必再重复它与其他鸟类相同的特点。这种组织方式使得所有的概念层次分明,简洁洗练,非常符合人们日常的思维习惯。 Abstract class PhoneCard Double balance; Void performDial() 由于抽象类是它的所有子类的公共属性的集合,所以使用抽象类的一大优点就是可以充分利用这些公共属性来提高开发和维护程序的效率。比如PhoneCard类,performDial()方法的返回值是void,表示调用这个方法时没有返回的数值。假设现在需要修改所有电话卡类的这个方法,把返回类型改为boolean,用这个布尔型的值来说明通话操作是否成功的执行,则只需要在抽象类PhoneCard中做相应的修改,而不需要改的每个具体的电话卡雷。这种把各类的公共属性从它们各自的定义中抽取出来形成一个抽象类的方法显然比把公共属性保留在具体类中要方便的多。下面举个抽象类应用的具体例子。abstract class ObjectStorage int objectnum=0; Object atorage=new Ob

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论