【Java學習筆記之十三】初探Java物件導向的過程及代碼實現

來源:互聯網
上載者:User

標籤:pre   一個   .com   min   經理   gif   ora   建立   initial   

理解Java物件導向的重要知識點:

一、 類,對象

    類?首先舉一個例子:小李設計了一張汽車設計圖,然後交給生產車間來生產汽車,有黑色的、紅色的、白色的... 這裡,汽車設計圖就是我們說的類(class),生產車間就是new構造器(大部分對象都是new出來的),生產出來的汽車就是我們要說的對象。可以說java編程實質就是構建類的過程。

    對象?萬物皆對象,宇宙中,如植物,動物,人類,每個個體都是各司其職、各盡所能的。這就要求對象高內聚、低耦合(簡單理解就是人的大腦,它負責思考,想象,記憶,而不能呼吸,排毒,消化食物,從而保證它獨立和高效)。對象具有兩種東西狀態(屬性)和行為(方法),請看下面代碼:

Student.java

 1 public class Student { 2     String name;      //姓名 3     int age;           //年齡 4     String classNo;    //班級 5     String hobby;     //愛好 6     //輸出資訊方法 7     public void show(){ 8         System.out.println(name + "\n年齡:" + age + "\n就讀於:" + 9             classNo + "\n愛好:" + hobby);10     }11 }

InitialStudent.java

1 public class InitialStudent {2     public static void main(String args[]){3         Student student = new Student();    //建立對象4         student.name = "張浩";            //給對象賦值5         student.age = 10;6         student.classNo = "S1班";      7         student.hobby = "籃球";8         student.show();            //調用方法9 } }

二、封裝,繼承,多態

    封裝?舉個粗俗的比喻,我的移動硬碟存了很多各式各類的資料,但是舍友常常借用,時不時拿我的用(格式化?裝系統?存電影?),這就給我這個擁有者非常大的不便,我就跟他聲明,這個硬碟是我私人的,不能你得按照我允許的方式使用!對象也是這樣,不能隨意的存取內部資料,否則會造成“交叉感染”。所以我們需要封裝:將屬性私人化,提供公有的方法訪問私人屬性。

Adult.java

 1 public class Adult { 2     private int age; 3     public int getAge() { 4         return age; 5     } 6     public void setAge(int age) { 7         if (age < 18) { 8             System.out.println("錯誤!最小年齡應為18歲!"); 9             this.age = 18; // 如果不符合年齡要求,則賦予預設值10         }11         else{12         this.age = age;13         }14     }15 16     public String toString() {17         return " [age=" + age + "]";18     }19 }

TestAdult.java

1 public class TestAdult {2     public static void main(String[] args) {3         Adult p1 = new Adult();      4         p1.setAge(20);              //通過seter、geter、toString來對Adult類的私人屬性訪問5         System.out.println(p1.toString());  //增加了資料訪問限制,保證可維護性6     }7 }

繼承?經理覺得小李設計的汽車設計圖非常棒,但是現在推崇新能源,於是需要將引擎改成電能發動機。於是小陳輕而易舉將圖紙中汽油發動機部分改成引擎發動機,再重製一下關係就完成了新圖紙!這就是繼承的作用:是使用已存在的類的定義作為基礎建立新類,新的類可以擁有父類的特點,也可以衍生出更多的特點。這使得複用以前的代碼非常容易,能夠大大縮短開發時間。

Person.java

 1 class Person {                    // 定義人類 2     public String mName;         // 姓名 3     public int mAge;             // 年齡 4  5     public void dining() { 6         System.out.println("吃飽了..."); 7     }                            // 吃飯的方法 8 } 9 10 class Student extends Person {   // 學生類繼承於人類11     public float mGrade;         // 成績12 13     public void examination() {14         System.out.println("考試及格了...");15     }                            // 考試的方法16 }17 18 class Teacher extends Person {  // 教師類繼承於人類19     public float mSalary;       // 薪水20 21     public void prelection() {22         System.out.println("上課很累...");23     }                           // 上課的方法24 }

TestPerson.java 

 1 public class TestPerson {  2     public static void main(String[] args) { 3         Student std = new Student(); // 執行個體化學生對象 4         std.mName = "李東"; 5         std.mAge = 18; // 為姓名和年齡賦值,訪問的是父類中的成員 6         std.dining(); // 調用吃飯的方法,訪問的是父類中的成員 7         std.examination(); // 調用考試方法,訪問的是子類中的成員 8  9         Teacher teacher = new Teacher(); // 執行個體化教師對象10         teacher.mName = "趙忠祥";11         teacher.mAge = 72;// 為姓名和年齡賦值,訪問的是父類中的成員12         teacher.dining();// 調用吃飯的方法,訪問的是父類中的成員13         teacher.prelection();// 調用考試方法,訪問的是子類中的成員14     }15 }

多態?程式中定義的引用變數所指向的具體類型和通過該引用變數發出的方法調用在編程時並不確定,而是在程式運行期間才確定,即一個引用變數倒底會指向哪個類的執行個體對象,該引用變數發出的方法調用到底是哪個類中實現的方法,必須在由程式運行期間才能決定。因為在程式運行時才確定具體的類,這樣,不用修改來源程式代碼,就可以讓引用變數綁定到各種不同的類實現上,從而導致該引用調用的具體方法隨之改變,即不修改程式碼就可以改變程式運行時所綁定的具體代碼,讓程式可以選擇多個運行狀態,這就是多態性。多態性增強了軟體的靈活性和擴充性。小李喜歡聽小鳥唱歌{麻雀,杜鵑,鸚鵡}

    小李:窗外的鳥兒,給我唱首歌。                                                            

    1.(鳥 bird = new 麻雀 )?                                                                

    2.(鳥 bird = new 杜鵑 )?                                                                

    3.(鳥 bird = new 鸚鵡 )?                                                                

    鳥兒:bird.sing()~~~~~                                                                    

    小李:鳥兒唱的不錯,你是哪種鳥?                                                         

    鳥兒: bird.shape()                                                                            

    小李:(---如果上面藍字定義的是3,是鸚鵡)哈哈!原來你是鸚鵡!              

     所以,多態的過程實質是一個抽象指令,讓一組具有相同行為單具有不同內容的個體協同工作的這樣的一個過程。

【Java學習筆記之十三】初探Java物件導向的過程及代碼實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.