6.3.2 對象的使用
對象的使用包括引用對象的成員變量和方法,通過運算符 • 可以實現(xiàn)對變量的訪問和方法的調(diào)用,變量和方法可以通過設定一定的訪問權(quán)限來允許或禁止其它對象對的訪問 。 我 們 先 定 義 一 個 類 Point,它 在 例 6.5的 定 義 中 添 加 了 一 些 內(nèi) 容 。
例6.6
class Point{
int x,y;
String name = "a point";
Point()
{
x = 0;
y = 0;
}
Point( int x, int y, String name )
{
this.x = x;
this.y = y;
this.name = name;
}
int getX()
{
return x;
}
int getY()
{
return y;
}
void move( int newX, int newY )
{
x = newX;
y = newY;
}
Point newPoint( String name )
{
Point newP = new Point( -x, -y, name );
return newP;
}
boolean equal( int x, int y )
{
if( this.x==x && this.y==y )
return true;
else
return false;
}
void print()
{
System.out.println(name+" : x = "+x+" y = "+y);
}
public static void main( String args[] ){
Point p = new Point();
p.print();
p.move(50,50);
System.out.println("** after moving **");
System.out.println("Get x and y directly");
System.out.println("x = "+p.x+" y = "+p.y);
System.out.println("or Get x and y by calling method");
System.out.println ("x = "+p.getY()+" y = "+p.getY());
if( p.equal(50,50) )
System.out.println("I like this point!!!! ");
else
System.out.println("I hate it!!!!! ");
p.newPoint( "a new point" ).print();
new Point( 10, 15, "another new point" ).print();
}
}
運行結(jié)果為:
C:\java UsingObject
a point : x = 0 y = 0
**** after moving *****
Get x and y directly
x = 50 y = 50
or Get x and y by calling method
x = 50 y = 50
I like this point!!!!
a new point : x = -50 y = -50
another new point : x = 10 y = 15
1. 引用對象的變量
要訪問對象的某個變量,其格式為:
objectReference.variable
其中objectReference是對象的一個引用,它可以是一個已生成的對象,也可以是能夠生成對 象引用的表達式 。
例如 :我們用Point p=new Point();生成了類Point的對象p后,可以用p.x,p.y來訪問該點的 x、 y坐標,如
p.x = 10; p.y = 20;
或者用new生成對象的引用,然后直接訪問,如 :
tx = new point().x;
2. 調(diào)用對象的方法
要調(diào)用對象的某個方法,其格式為 :
objectReference.methodName ( [paramlist] );
例 如 我 們 要 移 動 類 Point的 對 象 p,可 以 用
p.move(30,20);雖然我們可以直接訪問對象的變量 p.x、p.y來改變點 p的坐標,但 是 通 過 方 法 調(diào) 用 的 方 式來實現(xiàn)能更好地體現(xiàn)面向?qū)ο蟮奶攸c,建議在可能的情況下盡可能使用方法調(diào)用。同樣,也可以用new生成對象的引用,然后直接調(diào)用它的方法,如
new point(). move (30,20);
前面已經(jīng)講過,在對象的方法執(zhí)行完后,通常會返回指定類型的值,我們可以合法地使 用這個值,如:例6.6中類Point的方法equal返回布爾值,我們可以用它來作為判斷條件分別執(zhí)行 不同的分支。 如 :
if (p.equal (20,30)){
…… //statements when equal
}else {
…… //statements when unequal
}
另外,類Point的方法newPoint返回該點關于原點的對稱點,返回值也是一個Point類型, 我們 可以訪問它的變量或調(diào)用它的方法,如 :
px = p.newPoint().x 或
px = p.newPoint(). getX();