วันอังคารที่ 10 พฤศจิกายน พ.ศ. 2558

inheritance

inheritance

           การสืบทอด(inheritance) ในโปรแกรมเชิงวัตถุเป็นเเนวความคิดที่เรียนเเบบจากการสืบทอดลักษณะ ของลูกจากพ่อเเม่   ภาษาโปรแกรม ภาษาโปรแกรมเชิงวัตถุนำการสืบทอด มาใช้กับคลาสและอินเทอร์เฟช              
            ในการเขียนโปรแกรมภาษา Java นั้นเราไม่จำเป็นต้องสร้างคลาสขึ้นมาใหม่เองทั้งหมด แต่เราสามารถใช้คลาสที่มีคนสร้างไว้ หรือที่เราเคยสร้างไว้อยู่แล้วมาใช้ให้เป็นประโยชน์ได้ 

            กลไลการสืบทอด
                  กลไกลการสืบทอด ช่วยแก้ไขปัญหาการเขียนโปรแกรม ซ้ำซ้อนกันได้   เมธอดหรือ แอตทริบิวต์ที่คลาสต่างๆ มีร่วมกันอยู่จะถูกนำไปใส่คลาสเเม่ คลาสลูกจะสืบทอดเมธอด เเละแอตทริบิวต์แม่โดยอัตโนมัติ การเเก้ไขการเปลี่ยนแปลงเมธอดในคลาสเเม่จะทำให้คลาสลูกเปลี่ยนตามไปด้วย เเมว ปลา เเละ ลิง ล้วนเป็นสัตว์ สัตว์ทุกตัวสามารถ กินเเละนอนได้ เราจึงนำแอตทริบิวต์เเละเมธอดที่สัตว์ต่างๆมีร่วมกัน  ไปใส่ในคลาสสัตว์ คลาสสัตว์เขียนเป็น ภาษาไทยปนภาษา จาวา ได้ดังนี้

 class  สัตว์ {
  // แอตทริบิวต์
อายุ ;
ความหิว ;
// เมธอด 
กิน() {...}
นอน() {...}

หลังจากนั้น เราจะสามารถทำการเชื่มต่อคลาส เเมว ปลาเเละลิงกับคลาสสัตว์ โดยอาศัยกลไกลของการสืบทอด  การสืบทอดในภาษาไทยปนภาษา จาวา ใช้คำว่า extends  (ภาษา จาวา ก็ใช้extends เหมือนกัน ) การสืบทอดมีภาพเเบบดังนี้

ภาพเเบบ
class คลาสลูก extends คลาสเเม่
ตัวอย่างเช่น 

class เเมว extends  สัตว์ {
}
classปลา extends สัตว์ {
}
classลิง extends สัตว์{
}


เรื่องเกี่ยวกับการ Inheritance 
เรื่องเกี่ยวกับการ Inheritance จะมีส่วนประกอบหลายส่วนประกอบกันที่คุณต้องทำความรู้จักดังนี้
  • SuperClass  เป็นคลาสที่เป็นต้นแบบให้คลาสอื่นสืบทอดคุณสมบัติ
  • SubClass  เป็นคลาสที่สืบทอดคุณสมบัติจากคลาสอื่น
  • FinalClass  คลาสที่ไม่ยอมให้คลาสอื่นสืบทอดคุณสมบัติ
  • Override method  การปรับเปลี่ยนคุณสมบัติของเมธอดในคลาสลูกให้ต่างจากคลาสแม่
 SuperClass และ SubClass
  • SuperClass เรียกง่ายๆ ว่า คลาสแม่ เป็นคลาสที่เป็นต้นแบบให้คลาสอื่นสืบทอดคุณลักษณะ เช่นคลาส Animal เป็น SuperClass ของคลาส Lion, คลาส elephant, คลาส Tiger, คลาส Dog และคลาส Cat
  • SubClass เรียกง่ายๆ ว่า คลาสลูก เป็นคลาสที่สืบทอดคุณลักษณะ (ทั้งแอตทริบิวต์ และเมธอด)



ตัวอย่างสืบทอดไปสู่ SubClass ได้บ้าง

ตัวอย่าง 1

pulic class inheritUsing{
public static void main (String[]args){
Father ada = nwe Father();
String strIn = dad.ShowFather();
System.out.println(strIn);
son child =new Son();
strIn = child.ShowSon();
System.out.println(strIn);
strIn = child.ShowFather();
System.out.println(strIn);
}
      }

class Father{
private int f1;
String ShowFather()
{
   f1=(int) (Math.random()*10)+30;
   return "class Father : age =" + f1;
  }
}

class  Son  extends Father
private int s1;
String ShowSon()
{
s1 = (int)(Math.random()*10);
return "class Son : age =" +s1;
   }
}


Override method 
 เป็นการแก้ไขเมธอดที่สืบทอดมาจากคลาสแม่ ซึ่งการ Override เมธอดในคลาสแม่นั้น คลาสลูกจะต้องมีชื่อของเมธอด ,ค่าส่งกลับออกจากเมธอด และค่าอาร์กิวเมนต์เหมือนคลาสแม่ แต่จะปรับปรุงการทำงานภายในที่ไม่เหมือนกับคลาสแม่   

ตัวออย่าง 2

Public   class InheritOverride{
                public static void main(String[]args){
                                Parent  dadmom = new Parent();
                                System.out.println(dadmom.Show());
                                Child   kid = new Child();
                                System.out.println(kid.Show ());
                }
}
Class   Parent {
                Private   int   px;
                String   Show(){
                                Px = (int)(Math.random()*100);
                                Return  “px = ”+ px;
                }
}
Class Child extends Parent {
                Private int cx;   
                String   Show() {
                                Cx = (int)(Math.random()*100)-200;                       
                                Return “cx = ” + cx;
                }
}



FinalClass
              
         คลาสที่ใช้คีย์เวิร์ด final กับตัวคลาส ทำให้เป็นคลาสที่ไม่สามารถืบทอดคุณสมบัติได้ แต่หากกำหนด  คีย์เวิร์ด final ให้กับเพียงแค่บางเมธอดภายในคลาสที่เป็นแม่แล้ว จะทำให้คลาสลูกที่สืบทอดจากไม่สามารถแก้ไขข้อมูลต่างๆ ภายในเมธอดที่สืบทอดจากคลาสแม่ได้ (แต่คลาสแม่ยังสืบทอดต่อไปได้)

ตัวอย่าง  3

Final   class  Dinosaur  {
                public  int  Weinght = 5000l;
                String   Show () {
                                Return “I  am Dinosaur.  Wiegt =” + “kg”;
                }
}

Class  Reptile  {
                public   int   Weight = 30;
                final   String   ShowReptile(){
                                return “I  am  reptile.  Weight = ”+  Weight + “ kg ”;
                }
}
                

ตัวอย่างที่ 4
class Calculation{
   int z;
   public void addition(int x, int y){
      z=x+y;
      System.out.println("The sum of the given numbers:"+z);
   }
   public void Substraction(int x,int y){
      z=x-y;
      System.out.println("The difference between the given numbers:"+z);
   }
  
}

public class My_Calculation extends Calculation{   
 
   public void multiplication(int x, int y){
      z=x*y;
      System.out.println("The product of the given numbers:"+z);
   }
   public static void main(String args[]){
      int a=20, b=10;
      My_Calculation demo = new My_Calculation();
      demo.addition(a, b);
      demo.Substraction(a, b);
      demo.multiplication(a, b);     
     
   }


}


Compile and execute the above code as shown below

javac My_Calculation.java
java My_Calculation
After executing the program it will produce the following result.

The sum of the given numbers:30
The difference between the given numbers:10
The product of the given numbers:200


ไม่มีความคิดเห็น:

แสดงความคิดเห็น

Moodle 19+Font TH

Moodle 19+Font TH ดาวโหลด ดาวโหลด