1. 程式人生 > >03.面向物件:類及類的封裝——public和private

03.面向物件:類及類的封裝——public和private

面向物件:把構成問題的事物,按照一定規則劃分為多個獨立的物件,然後通過呼叫物件的方法來解決問題。——《Java基礎案例教程》

面向物件的特點:

  1. 封裝:封裝屬性和行為
  2. 繼承:無需在重新編寫原有類的情況下,對原有類的功能進行擴充套件——增強程式碼複用,提高開發效率
  3. 多型:允許重名,不同物件所表現的行為不同

一、類

類是物件的抽象,鳥是一類,鸚鵡是一個物件

建立類

class Person{
	int age;
	void Speak() {
		System.out.println("我今年"+age+"歲~");
	}
}

新建類:

Person P = new Preson();

全部程式:

public class Example01 {
	public static void main(String[] args) {
		Person p1 = new Person(); //新定義物件
		Person p2 = new Person(); //新定義物件
		p1.age = 19;
		p2.age = 24; //傳入物件引數
		p1.Speak();
		p2.Speak();  //呼叫類的函式
	}
}

class Person{
	int age;
	void Speak() {
		System.out.println("我今年"+age+"歲~");
	}
}

二、類的封裝

  1. 使用public

有兩個問題:

  • 第12行報錯:The public type Student must be defined in its own file

於是,我們新建一個Class檔案:

沒有提示錯誤了,

  • 再來看第二個問題,一個學生的年紀是128,這多半是錯了。我們不想要任何一個人隨意在main裡胡亂修改年紀,於是乎,我們用private

提示:我目前的理解是private設定的不是不可以改,只是改起來要麻煩一點,就像小區的大門,以前沒有門,現在弄個門,外人一樣可以進來,只是麻煩一點

class Student{
	private String name;//將name屬性私有化
	private int age;
	
	//getName()方法用於獲取name屬性的值
	public String getName() {
		return name;
	}
	//setName()方法用於設定name屬性的值
	public void setName(String stuName) {
		name = stuName;
	}
	//同理
	public int getAge() {
		return age;
	}
	public void setAge(int stuAge) {
		if(stuAge<=0 && stuAge>=100) {
			System.out.println("請確認您所輸入的年齡");
		}else {
			age = stuAge;
		}
	}
	public void introduce() {
		System.out.println("我叫"+name+"今年"+age+"歲~");
	}
}
//不用public 就可以放在同一個檔案內

public class Example01 {
	public static void main(String[] args) {
		Student stu = new Student();
		stu.setAge(18);
		stu.setName("阿瑤");
		stu.introduce();
	}
}