Java主要修饰符

2020-02-22 13:11

武汉理工大学《Java程序设计基础》作业 软件工程1004班 牛洋 0121010680409

Java主要修饰符

摘要:Java修饰符是Java中很重要的一部分,本文总结了Java主要修饰符

的作用及用法,并通过具体的例子对其进行了说明及应用,使在Java的学习中对修饰符有更系统的认识。

关键词:private

public protected 1

static final abstract

武汉理工大学《Java程序设计基础》作业 软件工程1004班 牛洋 0121010680409

1权限访问修饰符

Java中常用的权限访问修饰符主要有以下三个:private public protected,这三个修饰符都可以用来修饰类,方法和字段。通常来说,类的成员被修饰为private,类的方法被修饰为public,接口的抽象方法的访问修饰符都被指定为pubilc.

1.1私有访问修饰符

用private修饰的域和方法只能被同一个类中的成员方法所访问,而不能被其他任何类(包括该类的子类)访问。

要注意的是同一个类的不同对象是可以访问对方的private域或private方法。这是因为访问保护是控制在类的级别上,而不是在对象的级别上。

private访问控制符提供了最高的类成员保护级别。凡是限定在类内部使用的域和方法就应该用private修饰,使它们不被其他类所见,体现了类的封装和信息隐藏。

1.2默认访问控制符

如果在类的定义中,域和方法前没有指定访问控制符,则域和方法具有包访问性,即可被处于同一个包中的所有类(的方法)所访问。它们也被称为“包有元”成员。

1.3保护访问控制符

类中限定为protected的成员可以被这个类本身、它的子类(包括同一个包及不同包中的子类)以及同一个包中的所有其他类来访问。

该访问控制符较之默认访问控制符又放宽了一些,主要是允许它的子类都可以访问(即使在不同的包内)

1.4公共访问控制符

类中被限定为public的成员可以被所有的类访问

1.5访问修饰符通常的定义方式

(1)类和类成员都采用默认访问控制(包内访问)

(2)类比成员的访问范围宽。成员在类的范围内,根据各自的用途设置不同的访问控制。

如果一个类中定义了常用的操作,希望能作为公共工具供其他类和程序使用,则应把类本身和这些方法都定义成为public,这也是Java的主类必须是public的原因。

由于public修饰符完全对外公开,可能会造成安全性和数据封装性下降,所以一般应减少public的使用。

为了使对象具有良好的封装性,一般将类的实例域设计成为私有,为了使其他类和对象能够访问私有域,本类必须提供访问私有域的方法(公共方法)。

2

武汉理工大学《Java程序设计基础》作业 软件工程1004班 牛洋 0121010680409

权限修饰符的用法,总结为下表: 修饰符 包外 子类 public protected default public yes no no no yes yes no no 包内 yes yes yes no 类内 yes yes yes yes

2static修饰符

static用来修饰内部类,方法,字段。修饰内部类说明该内部类属于外部类而不属于外部类的某个实例。修饰字段说明该字段属于类而不属于类实例。修饰方法说明该方法属于类而不属于类实例。

通过一个简单的例子来说明static的用法。 package com.java; public class fun {

public static void f() {

System.out.println(\ } }

package com.java; public class Sum {

public static void main(String []args) { fun.f(); } }

显然,程序的运行结果是输出1。在这段代码里两次出现了用static声明的方法,此方法是类的方法,而不是类的成员的方法,因此在使用这些方法的时候可以不必先通过创建类的对象来使用方法,而可以直接通过类来使用。如果把第一个fun类里面f()方法的修饰符static去掉,则在Sum类中主方法的代码应改为:

fun s = new fun(); s.f();

如果用了static声明f()方法,又要使用fun类的对象来使用该方法,则要在代码中加上@SuppressWarnings(\

要注意的是Java不能像C/C++一样在方法中使用static声明变量,例如在上述代码的f()方法中加上static int i = 0;就会报错,报错为:

3

武汉理工大学《Java程序设计基础》作业 软件工程1004班 牛洋 0121010680409

Exception in thread \ Illegal modifier for parameter i; only final is permitted

at com.java.fun.f(fun.java:4)

at com.java.Sum.main(Sum.java:6))

在Java代码中多次使用的main()方法就是静态方法,这是为了系统在没有任何实例化对象之前就可以运行一个应用程序。

由于static方法是属于整个类的,它在内存中的代码段将随着类的定义而分配和装载,不被任何一个对象专有,它不能操纵和处理属于某个对象的成员变量,而只能处理整个类的成员变量,也就是static方法只能处理static域。 在类的定义中,凡是涉及针对一个具体对象的方法必须是非静态的,调用方法时应采用“对象名.方法名”;而不涉及到具体对象的方法必须是静态的,调用方法时应采用“类名.方法名”

3final修饰符

final的意思是不可变,相当于C++中的const,它可以修饰类、字段、方法。修饰类后类不能被扩展(extends),也就是不能被继承。修饰字段后字段的值不能被改变,因此如果有final修饰字段,应该对字段进行手动初始化。修饰方法后该方法不能被改变,也就是重写。

3.1不能为用final声明的变量多次赋值

下述的代码: package com.java; public class Sum { public static void main(String []args) { final int i = 0; i = 0;

System.out.println(i); } }

该代码由于为用final声明的变量i重新赋值,则报错为:

Exception in thread \java.lang.Error: Unresolved compilation problem: The final local variable i cannot be assigned. It must be blank and not using a compound assignment at com.java.Sum.main(Sum.java:5)

3.2为了防止变量或函数的返回值被修改,应尽可能多地使用final修饰方法与变量

在类定义中,凡是final修饰符所修饰的方法,是功能和内部语句不能被更

4

武汉理工大学《Java程序设计基础》作业 软件工程1004班 牛洋 0121010680409

改的方法,它可以防止子类对父类的关键方法的错误重定义,保证了程序的安全性与正确性。

3.3不能继承被final声明的类

package com.java; public final class fun { }

package com.java;

public class Sum extends fun { public static void main(String []args) { System.out.println(\ } }

上述代码中由于Sum类试图继承用final修饰的fun类,因此会报错,报

错为:

The type Sum cannot subclass the final class fun Sum.java /sun/src/com/java line 2 Java Problem

如果要继承fun类,fun类就不能被final修饰,应去掉final修饰符。

3.4不能重写用final修饰的方法

package com.java; public class fun {

public void functionOne() { System.out.println(\ }

public final void functionTwo() { System.out.println(\ } }

package com.java;

public class Sum extends fun { public void functionOne() { super.functionOne(); System.out.println(\ }

public void functionTwo() { super.functionTwo(); }

public static void main(String []args) { Sum s = new Sum(); s.functionOne(); s.functionTwo(); }

5


Java主要修饰符.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:猴王出世

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: