理论教育 Java面向对象程序设计中的成员变量及作用

Java面向对象程序设计中的成员变量及作用

时间:2023-11-25 理论教育 版权反馈
【摘要】:成员变量又称为成员属性,它是描述对象状态的数据,是类中很重要的组成部分。在一个类中,成员变量应该是唯一的。默认情况下,成员变量是实例成员,在外部需要通过对象才能操作。为了表达上的方便,省略了其中“成员”两字,将被这些修饰符所修饰的变量分别称为私有变量、保护变量和公共变量。局部变量和成员变量的区别在方法内部可以定义变量,被称为局部变量。

Java面向对象程序设计中的成员变量及作用

成员变量又称为成员属性,它是描述对象状态的数据,是类中很重要的组成部分。本节详细讨论如何来定义成员变量、成员变量的访问权限,以及静态成员变量与实例成员变量之间的区别。

1.成员变量的定义

成员变量的定义和使用成员变量是在类里面,并与方法处于同一层次。定义成员变量的语法如下:

类的成员变量和在方法中所声明的局部变量都是用户标识符,它们的命名规则相同。变量修饰符是可选项,一个没有变量修饰符的变量定义如下:

成员变量的类型可以是Java 中的任意数据类型,包括基本类型、数组、类和接口。在一个类中,成员变量应该是唯一的。

默认情况下,成员变量是实例成员,在外部需要通过对象才能操作。如果用static 修饰,就成为了静态成员,也称为类变量,无须通过对象就可以操作。

虽然Java 并没有规定,成员变量必须定义在类的开始部分,不过在实际编程中,多数程序员习惯将成员变量定义在成员方法的前面。

2.成员变量的访问权限

访问权限修饰符声明了成员变量的访问权限。Java 提供的显示访问权限修饰符有私有(private)、保护(protected)和公共(public)。除此之外,还有一种默认的访问权限,只有当变量前面没有写明任何访问权限修饰符时,就以默认作为访问权限。为了表达上的方便,省略了其中“成员”两字,将被这些修饰符所修饰的变量分别称为私有变量、保护变量和公共变量。下面分别讨论public 和private 修饰符的用法,其他修饰符在后面介绍。

(1)公有变量

凡是被public 修饰的成员变量,都称为公共变量,它可以被任何类所访问。即允许该变量所属的类中所有方法访问,也允许其他类在外部访问。例如:

在类TestPublic 中声明了一个公共变量a,它可以被任何类所访问。下面这段程序中,类Test 可以合法地修改公共变量a 的值,而无论其他类位于什么地方。

用public 修饰的变量,允许任何类在外部直接访问,这破坏了封装的原则,造成数据安全性能下降,所以除非有特别的需要,否则不要使用这种方案。

(2)私有变量

凡是被private 修饰的成员变量,都称为私有变量。它只允许在本类的内部访问,任何外部类都不能访问它。例如:

如果企图在类的外部访问私有变量,编译器将会报错。

为了让外部用户能够访问某些私有变量,通常类的设计者会提供一些方法给外部调用,这些方法被称为访问接口。下面是一个改写过的TestPrivate 类。(www.daowen.com)

私有变量很好地贯彻了封装原则,所有的私有变量都只能通过程序员设计的接口来访问,任何外部使用者都无法直接访问它,所以具有很高的安全性。

(3)局部变量和成员变量的区别

在方法内部可以定义变量,被称为局部变量。局部变量的一般形式如下:

➢ 变量修饰符可以是final,表示这是常量。

➢ 变量类型可以是Java 中任意合法的基本类型或复合类型。

➢ 变量名是用户自定义标识符,遵循标识符的一般规则。

➢ 变量可以在一行中定义多个局部变量,以逗号分隔。

➢ 定义变量时可以同时赋初值。

➢ 局部变量必须要先定义后使用。

例如,下面就是一些局部变量的定义:

从形式上看,局部变量和类的成员变量十分相似,但在使用上它们有很大的区别。局部变量没有访问权限修饰符,不能用public,private 和protected 来修饰。这是因为它只能在定义它的方法内部使用。

系统不会自动为局部变量赋初值,但对于成员变量,系统会自动赋初值。基本类型的值为0,引用类型的值为null。

局部变量的作用域仅限于定义它的方法,在该方法的外部无法访问它。成员变量的作用域在整个类内部都是可见的,所有成员方法都可以使用它。如果访问权限允许,还可以在类的外部使用成员变量。

局部变量的生存周期与方法的执行期相同。当方法执行到定义局部变量的语句时,局部变量被创建;执行到它所在的作用域的最后一条语句时,局部变量被销毁。类的实例成员变量和对象的生存期相同,类的静态成员变量的生存期是整个程序运行期。

在同一个方法中,不允许有同名的局部变量。在不同的方法中,可以有同名的局部变量,它们互不干涉。

局部变量可以和成员变量同名,且在使用时局部变量具有更高的优先级。代码如下:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈