Board logo

標題: 物件導向-封裝 [打印本頁]

作者: 周政輝    時間: 2018-3-17 10:13     標題: 物件導向-封裝

物件導向的三大特型:封裝、繼承、多型。

不過或許我們應該先來講類別和物件的關係。


在物件導向的世界裡,很多東西都是由一個一個物件構成的。舉凡一些感覺很「具體」的東西都可以是物件,例如房子、Xperia Z5、杯子、橡皮擦、哈士奇、Noob……等等,而類別通常是一些比較籠統的東西,例如車、人、飛機之類的。

雖然也沒有規定那些東西一定是物件或類別,不過通常我們會在類別裡定義它的特性,並透過這個類別來建立一個物件。

類別
類別比較算是一個範本,裡面定義好該有的屬性和方法,其中方法又大概可以分為一般的方法、類別方法和建構子。例如我們可以定義一個學生類別,裏面包含了name、score屬性,以及getName()方法、setScore()方法。

物件
物件則是實體的東西,由定義好的類別來建立一個物件。例如 Peter 是一個學生、Amy 是一個學生。

那麼 Peter 就會擁有 Student 類別的屬性和方法,所以 Peter 會有 name、score 屬性、getName()、setScore() 方法,Amy 也會有自己的 name、score 屬性、getName()、setScore()方法。
  1. class Student{
  2.         public String name;
  3.         public int score;
  4.        
  5.         Student(String n, int s){
  6.                 name = n;
  7.                 score = s;
  8.         }
  9.        
  10.         public void getName(){
  11.                 return name;
  12.         }
  13.        
  14.         public void setScore(int s){
  15.                 score = s;
  16.         }

  17.         public static void helloWorld(){
  18.                 System.out.println("Hello, World!");
  19.         }
  20. }

  21. public class class_test{
  22.         public static void main(String[] agrs){
  23.                 Student Peter = new Student("Peter", 88);                       
  24.                 Student Amy = new Student("Amy", 85);

  25.                 Student.hellowWorld();
  26.         }
  27. }
複製代碼

作者: 張健勳    時間: 2018-3-17 10:42

  1. package bbs.istak.org.tw;

  2. public class Main {

  3.         public static void main(String[] args) {
  4.                 // TODO 自動產生的方法 Stub
  5.                
  6.                 Stu st = new Stu("Creeper",59);
  7.                 st.getStu();
  8.                

  9.         }

  10. }
複製代碼
  1. package bbs.istak.org.tw;

  2. public class Stu {
  3.        
  4.         public String n;
  5.         public int s;
  6.        
  7.         public Stu(String n,int s)
  8.         {
  9.                 this.n = n;
  10.                 this.s = s;
  11.         }
  12.         public void getStu(){
  13.                
  14.                 System.out.println("名字: "+this.n+", 分數: "+this.s);
  15.                
  16.         }
  17. }
複製代碼

作者: 蔡庭豪    時間: 2018-3-17 10:47

本帖最後由 蔡庭豪 於 2018-3-17 11:18 編輯
  1. package bbs.istak.org.tw;

  2. public class Test {

  3.         public int score;
  4.         public String name;
  5.        
  6.         public Test(int score , String name){
  7.                
  8.                 this.score = score;
  9.                 this.name = name;
  10.         }
  11.        
  12.         public void getifm(){
  13.                
  14.                 System.out.println("Hello! my name is "+this.name+",and I got "+this.score+" in this test.");
  15.                
  16.         }
  17. }
複製代碼
  1. package bbs.istak.org.tw;

  2. public class Main {

  3.         public static void main(String[] args) {
  4.                 // TODO 自動產生的方法 Stub
  5.     Test tt = new Test(95,"Frank");
  6.     tt.getifm();
  7.         }

  8. }
複製代碼

作者: 林侑成    時間: 2018-3-17 10:47

  1. public class Student {
  2.         public String name;
  3.         public int score;
  4.         Student(String n, int s)
  5.         {
  6.                 name=n;
  7.                 score=s;
  8.         }
  9.         public String getName()
  10.         {
  11.                 return name;
  12.         }
  13.         public void setScore(int s)
  14.         {
  15.                 score=s;
  16.         }
  17.          public static void helloWorld()
  18.          {
  19.          System.out.println("Hello World!!!");
  20.      }
  21. }package Asdf;

  22. public class test {
  23.         public static void main(String[] args)
  24.         {
  25.                   Student Sam = new Student("Sam", 59);                        
  26.           Student Ray = new Student("Ray", 95);
  27.           Student.helloWorld();
  28.         }
  29. }
複製代碼

作者: 蔡季樺    時間: 2018-3-17 10:47

  1. package bbs.istak.org.tw;

  2. public class Main {

  3.         public static void main(String[] args) {
  4.                 // TODO 自動產生的方法 Stub
  5.                 Student stu = new Student("plan",100000);
  6.                 stu.getstudent();
  7.         }

  8. }
複製代碼
  1. package bbs.istak.org.tw;

  2. public class Student {
  3.         public String name;
  4.         public int score;
  5.         public Student(String name,int score)
  6.         {
  7.                 this.name = name;
  8.                 this.score = score;
  9.         }
  10.         public void getstudent()
  11.         {
  12.                 System.out.println("I'm student "+this.name+".My score is"+this.score);
  13.         }
  14. }
複製代碼

作者: 黃茂勛    時間: 2018-3-17 17:37

  1. class Student{
  2.        
  3.         public String name;
  4.         public int score;
  5.        
  6.        
  7.         Student(String name, int score)//建構子
  8.         {      
  9.               this.name=name;
  10.           this.score=score;               
  11.         }
  12.         public String getName()
  13.         {
  14.                 return name;
  15.         }
  16.         public void setScore(int score)
  17.         {
  18.                 this.score=score;
  19.         }
  20.         public static void halloWorld()
  21.         {
  22.                 System.out.println("Hallo World!");
  23.         }
  24. }

  25. public class Main {
  26.         public static void main(String[] args) {
  27.               Student William = new Student("威廉",87);
  28.           Student Mary = new Student("瑪莉",69);
  29.           Student.halloWorld();
  30.         }

  31. }
複製代碼

作者: 陳泓瑜    時間: 2018-3-17 18:50

  1. public class people_HP{
  2.         public static void main(String[] args){
  3.                 People Red = new People("Red", 88);                        
  4.                 People Chuck = new People("Chuck", 85);

  5.                 People.helloWorld();
  6.         }
  7. }
複製代碼
  1. class People{
  2.         public String name;
  3.         public int score;
  4.         
  5.         People(String n, int s){
  6.                 name = n;
  7.                 score = s;
  8.         }
  9.         
  10.         public String getName(){
  11.                 return name;
  12.         }
  13.         
  14.         public void set(int s){
  15.                 score = s;
  16.         }

  17.         public static void helloWorld(){
  18.                 System.out.println("Hello, World!");
  19.         }
  20. }
複製代碼





歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/) Powered by Discuz! 7.2