您的位置:首页 > 其它

成员变量的定义与使用

2015-09-21 23:34 260 查看
成员变量的定义与使用成员变量又称为成员属性,它是描述对象状态的数据,是类中很重要的组成成分。本节详细讨论如何来定义成员变量、成员变量的访问权限,以及静态成员变量与实例成员变量之间的区别。成员变量的定义定义成员变量的语法如下:
[变量修饰符] 类型说明符变量名
类的成员变量和在方法中所声明的局部变量都是用户标识符,它们的命名规则相同。变量修饰符是可选项,一个没有变量修饰符的变量定义如下:
public class Cuber{
double width,height;
int number;
}
  成员变量的类型可以是Java中的任意数据类型,包括基本类型、数组、类和接口。在一个类中,成员变量应该是唯一的,但是成员变量的名字可以和类中某个方法的名字相同,例如:
public class Point{
int x, y;
int x(){
return x;
}
}
  其中,方法x()和变量x具有相同的名字,但笔者不赞成这样写,因为这会引起不必要的混淆。
可以用成员变量修饰符来规定变量的相关属性,这些属性包括:
● 成员变量的访问权限。一共有4种访问权限可供选择,在3.3.2节将详细介绍。
● 成员变量是否为静态。默认情况下,成员变量是实例成员,在外部需要通过对象才能操作。如果用static修饰,就成为了静态成员,也称为类变量,无需通过对象就可以操作。
● 是否为常量。默认的是变量,如果前面加上final关键字,它就是一个常量。
这些修饰符可以任意组合使用。加上修饰符的成员变量如下所示:
public class Cuber{
private double width,height; //定义两个私有的成员变量
public static int count; //定义一个公共的静态类变量
public static final int COLORE=1; //定义一个公共的整型静态常量
}
  虽然Java并没有规定,成员变量必须定义在类的开始部分,不过在实际编程中,多数程序员将成员变量定义在成员方法的前面。
3.3.2 成员变量的访问权限
访问权限修饰符声明了成员变量的访问权限。Java提供的显示的访问权限修饰符有3种,分别是:私有(private)、保护(protected)和公共(public)。除此之外,还有一种默认的访问权限:friendly,它并不是Java的关键字,只有当变量前面没有写明任何访问权限修饰符时,就默认以friendly作为访问权限。为了表达上的方便,省略了其中“成员”两字,将被这些修饰符所修饰的变量分别称为私有变量、保护变量和公共变量。下面分别讨论各个修饰符的用法。
1.公共变量
凡是被public修饰的成员变量,都称为公共变量,它可以被任何类所访问。即允许该变量所属的类中所有方法访问,也允许其他类在外部访问。如例3.2所示。
【例3.2】 公共变量使用示例。//-----------文件名declarePublic.java,程序编号3.2------------------
public class declarePublic{
public int publicVar=10; //定义一个公共变量
}
  在类declarePublic中声明了一个公共变量publicVar,它可以被任何类所访问。下面这段程序中,类otherClass可以合法地修改变量publicVar的值,而无论otherClass位于什么地方。
//-----------文件名staticVar.java,程序编号3.17------------------
public class staticVar{
protected static int stat=0; //定义一个静态成员变量
}
下面这个程序使用不同的方法来访问这个静态变量。
//-----------文件名showStaticVar.java,程序编号3.18------------------
public class showStaticVar{
public static void main(String args[]){
staticVar.stat=100; //通过类名.变量名访问静态变量,无需创建对象
System.out.println("staticVar.stat="+staticVar.stat);
staticVar one = new staticVar(); //创建对象one
staticVar two = new staticVar(); //创建对象two
//分别为这两个对象的静态成员变量赋值
one.stat = 200;
two.stat = 300;
//分别显示这两个对象的静态成员变量值
System.out.println("one.stat="+one.stat);
System.out.println("two.stat="+two.stat);
//再通过类来显示静态变量的值
System.out.println("staticVar.stat="+staticVar.stat);
}
}
View Code程序3.18输出结果如下:
staticVar.stat=100
one.stat=300
two.stat=300
staticVar.stat=300
从上述结果中可以看到,静态变量stat是一个公共变量,无论哪个对象改变了它的值,对其他所有该类对象都有效。静态变量的一个重要作用是当作同类各个对象之间传递信息使用,类似于C语言中的全局变量。但这样破坏了数据的封装原则,往往会留下隐患,所以使用这类变量时需要万分谨慎。
静态变量的另一个用途是定义静态常量,比如:
public static double PI = 3.1415926;
这样的静态常量可以无需创建对象就直接使用,省略了创建对象的步骤,类似于C语言中用define定义的常量。这样定义常量,不仅使用方便,而且节省内存空间。在JDK中,存在着大量的这种静态常量。
%说明:本节中所有的成员变量的类型都是基本类型,其实它们也都可以是复合类型,比如数组、类、接口等类型。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: