03.面向物件:類及類的封裝——public和private
阿新 • • 發佈:2018-11-02
面向物件:把構成問題的事物,按照一定規則劃分為多個獨立的物件,然後通過呼叫物件的方法來解決問題。——《Java基礎案例教程》
面向物件的特點:
- 封裝:封裝屬性和行為
- 繼承:無需在重新編寫原有類的情況下,對原有類的功能進行擴充套件——增強程式碼複用,提高開發效率
- 多型:允許重名,不同物件所表現的行為不同
一、類
類是物件的抽象,鳥是一類,鸚鵡是一個物件
建立類
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+"歲~"); } }
二、類的封裝
- 使用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(); } }