1. 程式人生 > >Java面向物件主要知識點總結以及簡單專案心得

Java面向物件主要知識點總結以及簡單專案心得

1.      面向物件

java是一種面向物件的語言。也就是說,這種程式設計,把現實中的所有的問題都當做一個個物件來解決,每個物件都有其獨立的屬性和方法,每個物件之間具有一定的聯絡,在面向物件設計程式設計中,不需要考慮物件的實現細節,每個物件都有自己的任務和功能。例如:

public class A{

                         inta=2;

                         publicvoid ShowA(){

                                        System.out.println(a);

                         }

}

A是一個物件,這個物件有屬性a=2,方法ShowA()。這個類有獨立的屬性,而且可以實現某些功能(列印a的值)。詳細的面向物件的理解可以百度一下,我感覺程式碼敲多了也可以加深對面向物件的理解。

2.   建構函式

使用者自己建立的類預設都會有一個無參的建構函式,例如上面的類A,他的建構函式是:public  A(){

}

注意:預設的建構函式是無參的,如果你對建構函式進行過載,則會覆蓋掉預設的建構函式,你如果還想使用預設的建構函式,需要自己新增一個無參建構函式;建構函式無返回值型別。詳細講解百度“Java建構函式”。

3.   ==equals

簡單記就是==比較地址,equals比較內容。

具體為: 1. 如果是基本型別比較,那麼只能用==來比較,不能用equals 

                     2.對於字串型別變數比較,==比較的是該變數在記憶體中的首地址,equals比較的是變數的內容

                     3.對於非字串型別的變數來說,==equals比較的都是變數在記憶體中的首地址

注意:equals 方法是 java.lang.Object 類的方法,對於String型別,equals已經預設對該方法進行了重寫,所以可以直接用equals比較String型別變數的內容;當我們想比較我們自己所建立的類中的值時,則需要我們自己重寫equals

4.   方法的過載和重寫

a.方法的過載:在同一個類中,對該類中某一功能的不同實現;過載的方法名相同,但是引數不同。例:

public class A{

                         inta=2;

                         publicvoid ShowA(){             //方法一

                                        System.out.println(a);

                         }

                         publicvoid ShowA(int a){       //方法二

                                        System.out.println(a*2);

                         }

}

例子中的兩個方法方法名字是相同的為ShowA,只是形參不同,兩個方法實現的功能是不同的。這樣在呼叫該類中ShowA方法時,只需要調整形參就可以根據需要實現這兩個不同的方法。

對構造方法的過載原理是一樣的,舉一個構造方法過載的應用例子:

public class A{

         public A(inta){

                         this.a=a;

}

                         inta=2;

                         publicvoid ShowA(){

                                        System.out.println(a);

                         }             

}

傳值的應用:在例項化類時A demo=new A(6);括號內加入實參,便可以將值傳入類A中,即對類A進行了初始化,使類A中變數a的初始值等於6

引申:1.傳值只是建構函式過載的一個簡單應用,別的應用可以百度。

         2.介紹另一種傳值方法:在類中定義靜態變數的方法

                         publicclass A{

                         inta=2;

                         publicvoid ShowA(){

                                        System.out.println(a);

                         }

}

如果你想在別的類中使用上面的類A中的變數a,可以在A中定義一個靜態變數,在別的類中便可以直接使用了,如下:

public class A{

public static int b;

                         int a=2;

                         b=a;

                         publicvoid ShowA(){

                                        System.out.println(a);

                         }

}

這樣你可以再別的類中直接通過形如A.b的形式呼叫類A中的變數astatic表示全域性或者靜態的意思,用public修飾後其他類就可以自由呼叫該變數。其實還有靜態方法,這裡就不扯了,你可以百度“Javastatic”。
b.方法的重寫:方法重寫發生在具有繼承關係的兩個類中,子類中重寫的方法與父類的該方法方法名相同,返回值型別相同,引數相同,只是內部方法的實現不同(即用相同的變數,幹不同的事)

5.   專案

我只拿我做的那一部分舉例。我做的是學生密碼的修改。我的思路是這樣的:

要修改學生密碼,就需要修改資料庫中儲存密碼的表裡的資訊(該表為LoginInf),則我需要兩個資料——作為主鍵的學號ID和要修改的密碼pwd。在對資料庫操作的方法裡需要這兩個資料,我就通過實體類傳入資料到該方法裡,步驟如下:

1.   因為已經想好需要的資料,所以我先寫的實體類,實體類中有變數IDpwd,並重載了建構函式以便第二步傳入資料。

2.   對實體類進行例項化,然後將從文字框中獲得的IDpwd以實參的方式傳入實體類:比如操作介面程式碼為LoginInf s=newLoginInf(ID,pwd);

實體類可以這樣過載建構函式:String id;

                                                         Stringpwd;//這是實體類中定義的變數

                                                         publicLoginInf(String id,String pwd){

                                                                setId(id);

                                                                setPwd(pwd);

                                                         }

這樣,實體類中的值便的到了初始化,即把操作介面獲得的IDpwd傳入了實體類中

3.   在對資料庫操作的方法中(這是單獨的一個類,我定義的類名為ChangePwd),例項化實體類,“把需要的資料拿過來”。方法名是這樣寫的

public static boolean ChangePwd(LoginInf li)

這樣,你就可以通過形如li.getId();li.getPwd();來獲得想要修改的資料,把他用到對資料庫的修改上

流程如下圖: