📄 java03_04.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Java语言教程</title>
</head>
<body background="Bg.gif">
<p align="center"><b><font size="5">3.4 成员变量的定义与使用</font></b></p>
<p align="left">将<u>类体中</u>用来定义类状态的变量称为类的成员变量。语法形式如下:</p>
<p align="left">[变量修饰符] 类型说明符 变量名</p>
<p align="left">注意:</p>
<ul>
<li>
<p align="left"> 成员变量的类型可以是Java中的任意数据类型,包括简单类型、数组、类和接口。</li>
<li>
<p align="left">在一个类中,成员变量应该是唯一的,但是成员变量的名字可以和类中某个方法的名字相同,例如: <br>
class Point{ <br>
int x,y; <br>
int x(){ <br>
return x; <br>
} <br>
} <br>
其中,方法x()和变量x具有相同的名字,但我们不赞成这样写。</li>
<li>
<p align="left">类的成员变量和在方法中所声明的局部变量的命名规则相同,但作用域是不同的,成员变量的作用域是整个类,而局部变量的作用域只是方法内部。 </li>
</ul>
<p align="left">例3.2 class Cuber{<br>
double width,height;<br>
int number;<br>
}</p>
<p align="left">成员变量的修饰符指定了它的属性,包括:</p>
<ol>
<li>
<p align="left">成员变量的访问权限<br>
·公共(public)变量——可以被任何类所访问。<br>
例3.3<br>
class A{<br>
public int x=10;<br>
}<br>
class B{<br>
void change(){ <br>
A a=new A();<br>
a.x=20; //正确<br>
}<br>
} <br>
·私有(private)变量——只允许在本类的内部访问。<br>
例3.4<br>
class A{<br>
private int x=10;<br>
void change(){<br>
x=20; //合法<br>
}<br>
}<br>
class B{<br>
void change(){ <br>
A a=new A();<br>
a.x=20; //非法<br>
}<br>
} <br>
·保护(protected)变量——除了允许本类和它的子类访问以外,还允许同一个包中所有类访问,如:<br>
例3.6<br>
package one;<br>
class A{<br>
protected int x=10;<br>
void change(){<br>
x=20; //合法<br>
}<br>
}<br>
package one;<br>
class B{ //它也在包"one"中<br>
void change(){ <br>
A a=new A();<br>
a.x=20; //合法<br>
}<br>
} <br>
class C <b>extends A</b>{ //C是A的子类,不一定在包"one"中<br>
void change1(){ <br>
A a=new A();<br>
a.x=20; //合法,改变的是对象a的x值<br>
}<br>
void change2(){<br>
x=30; //这也合法,改变的是类C从A中所继承的x的值<br>
} <br>
}<br>
·缺省变量<br>
如果在变量前不加任何访问权修饰符,它就具有缺省的访问控制特性,也称为friendly变量,它允许在同一个包中的其它类访问,如:<br>
例3.7<br>
package one;<br>
class A{<br>
int x=10;<br>
void change(){<br>
x=20; //合法<br>
}<br>
}<br>
package one;<br>
class B{ //它也在包"one"中<br>
void change(){ <br>
A a=new A();<br>
a.x=20; //合法<br>
}<br>
} <br>
class C <b>extends A</b>{ //C是A的子类,假定它不在包"one"中<br>
void change1(){ <br>
A a=new A();<br>
a.x=20; //非法<br>
}<br>
}
</li>
<li>
<p align="left">实例变量<br>
上述所有的变量都是实例变量,它们只有在类被实例化后(也即创建了对应的对象后)才能使用,不同的对象拥有不同的实例变量。<br>
例3.8<br>
class A(){<br>
int x;<br>
}<br>
class B(){ //假定B和A在同一个包中<br>
public static void main(String argv[]){<br>
A one,two;<br>
one=new A();<br>
two=new A();<br>
one.x=10;<br>
two.x=20;<br>
System.out.println("one.x="+one.x+",
two.x="+two.x);<br>
}<br>
}
</li>
<li>
<p align="left">静态(static)变量<br>
静态变量用static来修饰,它和实例变量不同,它不属于任何一个类的实例,也就是说它属于全体类公有。而且不需要创建一个类就可以使用静态变量,它的初始化在类的实例化之前。<br>
例3.9<br>
class common{<br>
public static int pass=60; //我们一般将static声明成public访问类型<br>
}<br>
class A{ <br>
public static void main(String argv[]){<br>
System.out.println("common.pass="+common.pass);<br>
}<br>
}
</li>
<li>
<p align="left">常量(final)<br>
final来修饰上述的变量,那么它的值再初始化后就不可改变,成为常量。它通常和static联合使用。
</li>
</ol>
<p align="left"><font size="3"><a href="index.htm">回目录</a>
<a href="java03_02.htm">上一课</a> <a href="java03_05.htm">
下一课</a></font>
</p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -