Java技術_Java千百問(0029)_類、對象到底有什麼秘密
1、類、對象的概念是什麼
Java是目前應用最為廣泛的物件導向特的語言,它具有以下基本概念:
類對象方法抽象化多態性繼承封裝
我們首先看看類和對象的概念。
類
類是一個模版。是一個可以定義一類具有相同屬性、行為的模版。
例如:狗是一個類,它具有四肢、尾巴、頭、脊椎等屬性,具有吠叫、吃、繁殖等行為。
對象
對象是一個具體執行個體。根據是一個類的具體執行個體。
例如:我家對門養的一隻狗,具體到了某一隻。
2、Java如何定義類
類的定義如下︰
public class Dog{ String breed; int age; String color; void barking(){ } void hungry(){ } void sleeping(){ }}
類有以下關鍵點:
1、類可以包含以下任意類型的變數。
局部變數、執行個體變數、類變數。
2、類可以有任意數量的方法。
在上面的例子中,該類擁有barking(), hungry() 和 sleeping()三個方法。 3、類的建構函式
有關於類的討論,其中最重要的部分之一是建構函式。每個類都有一個建構函式,如果我們不明確地寫一個建構函式的類,Java編譯器產生一個預設的建構函式(無參數的)。
在每次建立一個類的新對象時,至少有一個建構函式被調用,在這裡會按照不同需求初始化一些對象內部的屬性。
建構函式的主要規則是,他們應該具有相同的名稱作為類。一個類可以有多個建構函式(當然每一個的參數都應該不同)。
建構函式的例子如下︰
public class Puppy{ public Puppy(){ } public Puppy(String name){ // This constructor has one parameter, name. }}
Java還支援單一實例類,在這裡能夠建立的類只有一個執行個體。
3、java中如何建立對象
如前面提到的,類提供的是模版,所以基本上一個對象是根據一個類建立的。
在Java中,使用關鍵字new建立新的對象。
根據類建立對象有三個步驟:
- 聲明: 變數聲明,一個變數名的物件類型。
- 執行個體化: 使用new關鍵字建立對象。
- 初始化: 關鍵字new後跟調用一個建構函式。初始化新的對象。
建立對象的執行個體:
public class Puppy{ public Puppy(String name){ // This constructor has one parameter, name. System.out.println("Passed Name is :" + name ); } public static void main(String []args){ // Following statement would create an object myPuppy Puppy myPuppy = new Puppy( "tommy" ); }}
將產生以下結果:
Passed Name is :tommy
4、如何訪問對象的執行個體變數和方法
執行個體變數和方法是通過剛才建立的對象來訪問的。
要訪問一個執行個體變數和方法如下:
/* First create an object */ObjectReference = new Constructor();/* Now call a variable as follows */ObjectReference.variableName;/* Now you can call a class method as follows */ObjectReference.MethodName();
例子:
public class Puppy{ int puppyAge; public Puppy(String name){ // This constructor has one parameter, name. System.out.println("Passed Name is :" + name ); } public void setAge( int age ){ puppyAge = age; } public int getAge( ){ System.out.println("Puppy's age is :" + puppyAge ); return puppyAge; } public static void main(String []args){ /* Object creation */ Puppy myPuppy = new Puppy( "tommy" ); /* Call class method to set puppy's age */ myPuppy.setAge( 2 ); /* Call another class method to get puppy's age */ myPuppy.getAge( ); /* You can access instance variable as follows as well */ System.out.println("Variable Value :" + myPuppy.puppyAge ); }}
將產生以下結果:
Passed Name is :tommy
Puppy’s age is :2
Variable Value :2