1. 程式人生 > >java 面向物件程式設計

java 面向物件程式設計

一直對面向物件程式設計的概念較模糊,今天認真理了一遍,按要求寫了容易理解的小程式模板(PS:內容不重要,關鍵是面向物件的思想,層次等。)

1. 要求

  1. 要求此人類必須包含有人的姓名、性別、出生日期等基本屬性(變數)。
  2. 要求此人類描述吃飯的方法(函式)和描述睡覺的方法(函式)。例如睡覺方法的執行體為一個 System.out.println() 函式,此函式輸出一段例如“ xx(姓名)往床上躺倒,不久就睡著了……”之類的描述睡覺的文字。
  3. 要求此人類的建構函式要具有無引數的建構函式,以及帶有姓名、性別、出生日期等引數的建構函式,並在建構函式中輸出一段描述xx(姓名)出生的文字。
  4. 例項化出張三和李四兩個人類物件(變數),併為之賦初值。
  5. 呼叫張三、李四等人類物件的各種屬性(類成員變數)和方法(函式)。
  6. 在上述人類的基礎上派生一個繼承自人類的新的學生類,加入學號等學生特有的屬性,加入上課、考試等方法,並例項化一個或幾個學生類物件,完成這些學生類物件的各種屬性和方法的呼叫。

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();//子類方法
	}

}

3. 執行結果

這裡寫圖片描述