java物件導向(1)

釋懷355發表於2014-06-14
物件導向特點:封裝,繼承,多型
封裝
將某一類物件作為一個類,將它的所有共性封裝在一起,有自己私有的屬性和方法,但只對外提供一些公共方法,這個過程就是一個封裝的過程。

建構函式
初始化物件,如果沒有建構函式,物件將無法建立,一般我們沒有顯示建立建構函式時,java有自帶的隱含建構函式,如果我們想在初始話物件時給物件新增一些初始值,那麼可以自定義建構函式,在建立物件時,顯示呼叫。

構造程式碼塊
在建構函式執行前執行。

this關鍵字
看上去是用於區分區域性變數和成員變數情況
實際this代表它所在函式所屬物件的引用
this關鍵字在建構函式間呼叫,並且this語句只能定義在建構函式的第一行,因為初始化要先執行

static關鍵字
用法:是一個修飾符,用於修飾成員(成員變數、成員函式)。
當成員被靜態修飾後,就多了一個呼叫方式,除了可以被物件呼叫外,還可以直接被類名呼叫。
類名.靜態成員。

static 特點
隨著類的載入而載入,隨著類的消失而消失。說明它的生命週期最長
優先於物件存在
被所有物件所共享
注意事項:靜態方法只能訪問靜態成員,非靜態方法既可以訪問非靜態成員,也可以訪問靜態成員
                   靜態方法中不可以定義this,super關鍵字。因為靜態優先於物件存在,所以靜態方法中不可以用this
靜態有利有弊:
利處:對物件的共享資料進行單獨空間儲存,節省空間。沒有必要每一個物件中都儲存一份。
弊端:生命週期過長,訪問出現侷限性。(靜態雖好,只能訪問靜態)

主函式
是一個特殊的函式。作為程式的入口,可以被jvm呼叫。
主函式的定義:
public:代表著該函式訪問許可權是最大的。
static:代表主函式隨著類的載入就已經存在了
void:主函式沒有具體的返回值
main:不是關鍵字,但是是一個特殊的單詞,可以被jvm識別
(string[] arr):函式的引數,引數型別是一個陣列,該陣列中的元素是字串。字串型別的資料
主函式是固定格式的:jvm 識別

javadoc:幫助文件的製作

靜態程式碼塊
隨著類的載入而執行,只執行一次
用於給類初始化,並優先於主函式

物件的初始化過程
class Person
{
     private Person(){}
     private String name = "hah";
     private int age;
     private static  String country = "cn";
     Person(String name,int age)
     {
          this.name = name;
          this.age = age;
     }
     //建構函式程式碼塊
     {
          System.out.println(name+".."+age);
     }
     public void setName(String name)
     {
          this.name = name;
     }

     public void speak()
     {
          System.out.println(this.name+"..."+this.age);
     }

     public static void  showCountry()
     {
          System.out.println("country="+Person.country);
          Person.method();
     }
     public static void method()
     {
          System.out.println("method run");
     }

}

class  PersonDemo
{
     public static void main(String[] args)
     {
          Person p = new Person("zhangsan",20);
          p.setName("lisi");
          new Person();
     }
}
/*
Person p = new Person("zhangsan",20);

該句話都做了什麼事情?
1,因為new用到了Person.class.所以會先找到Person.class檔案並載入到記憶體中。
2,執行該類中的static程式碼塊,如果有的話,給Person.class類進行初始化。
3,在堆記憶體中開闢空間,分配記憶體地址。
4,在堆記憶體中建立物件的特有屬性。並進行預設初始化。
5,對屬性進行顯示初始化。
6,對物件進行構造程式碼塊初始化。
7,對物件進行對應的建構函式初始化。
8,將記憶體地址付給棧記憶體中的p變數。
*/

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27026361/viewspace-1182850/,如需轉載,請註明出處,否則將追究法律責任。

相關文章