java 面向物件程式設計
阿新 • • 發佈:2018-12-11
一直對面向物件程式設計的概念較模糊,今天認真理了一遍,按要求寫了容易理解的小程式模板(PS:內容不重要,關鍵是面向物件的思想,層次等。)
1. 要求
- 要求此人類必須包含有人的姓名、性別、出生日期等基本屬性(變數)。
- 要求此人類描述吃飯的方法(函式)和描述睡覺的方法(函式)。例如睡覺方法的執行體為一個 System.out.println() 函式,此函式輸出一段例如“ xx(姓名)往床上躺倒,不久就睡著了……”之類的描述睡覺的文字。
- 要求此人類的建構函式要具有無引數的建構函式,以及帶有姓名、性別、出生日期等引數的建構函式,並在建構函式中輸出一段描述xx(姓名)出生的文字。
- 例項化出張三和李四兩個人類物件(變數),併為之賦初值。
- 呼叫張三、李四等人類物件的各種屬性(類成員變數)和方法(函式)。
- 在上述人類的基礎上派生一個繼承自人類的新的學生類,加入學號等學生特有的屬性,加入上課、考試等方法,並例項化一個或幾個學生類物件,完成這些學生類物件的各種屬性和方法的呼叫。
2. 程式碼
package ObjectOriented; //定義類 class Person { String name;//宣告欄位name String brithday;//宣告段brithday int age;//宣告欄位age Person(){//定義無參建構函式,無返回值定義,方法與類同名。 //初始化 name = "張三"; age = 20; brithday = "1月1日"; System.out.println(""); } Person(String newName,int newAge,String newBrithday){//重寫一個帶引數建構函式,無返回值定義,方法與類同名。 name = newName;//name為物件的屬性,newName為函式形參。 age = newAge; brithday = newBrithday; //也可以寫成以下形式 /* this.name=name;//前一個name為物件的屬性,有this指定,因為在本類中可直接訪問,後一個name為函式形參。 this.age=age;//前一個age為物件的欄位,有this指定,後一個age為函式形參。 this.brithday=brithday; */ } void sleep() {//定義無引數的sleep方法 System.out.println(name+"往床上躺倒,不久就睡著了。"); } //定義帶引數的sleep方法,實現方法過載 public void sleep(String a) {//定義帶引數的sleep方法,實現方法過載 System.out.println(name+"往床上躺倒,不久就睡著了。"+a); } } class Student extends Person {//繼承,Studeent為子類,Person為父類 int xuehao;//宣告欄位xuehao //定義無參建構函式,無返回值定義,方法與子類同名。 Student(){ } //重寫一個帶引數建構函式,無返回值定義,方法與子類同名。 Student(int xuehao){ this.xuehao = xuehao; } void attendClass() {//定義上課方法 System.out.println("上課"); } void exam() {//定義考試方法 System.out.println("考試"); } } //使用類建立物件 public class TestPerson { public static void main(String[] args) { //呼叫類的無參建構函式,使用new操作符從構造方法建立一個物件 Person person1 = new Person(); System.out.println(person1.name + "今年" + person1.age + "歲,生日是" + person1.brithday + "," ); person1.sleep(); Person person2 = new Person(); person2.name = "李四"; person2.age = 21; person2.brithday = "1月2日"; System.out.println(person2.name + "今年" + person2.age + "歲,生日是" + person2.brithday + "," ); person2.sleep("進入了夢鄉。"); Student student1 = new Student(); student1.name = "王五";//變數繼承 student1.age = 19; student1.brithday = "1月3日"; System.out.println(student1.name + "今年" + student1.age + "歲,生日是" + student1.brithday + "," ); student1.sleep();//方法繼承,父類方法 System.out.println("第二天又要"); student1.attendClass();//子類方法 System.out.print("又要"); student1.exam();//子類方法 } }