SlideShare a Scribd company logo
1 of 42
Download to read offline
976-140 Object-Oriented Programming
   344-202 Introduction to OOP


      การโปรแกรมเชิงวัตถุ
          8. Inheritance


                Faculty of Technology and Environment
           Prince of Songkla University, Phuket Campus
                                              2/2551
Why inheritance?
    How to programming for all characters in the game?




Object-Oriented Programming 2/2551                        2
Why inheritance?
      Student                GradStudent         Staff           Lecturer
      Id                     Id                  Id              Id
      Name                   Name                Name            Name
      Major                  Major               Office          Office
      register()             thesis              Salary          Salary
      checkGrade()           register()          paySalary()     assignCourse()
      checkActivity()        checkGrade()        checkDayOff()   paySalary()
                             listConference()                    checkDayOff()




                                          Reus
                                           e
Object-Oriented Programming 2/2551                                                3
Reuse
  OOP เป็นภาษาที่สนับสนุนการนาคลาสกลับไปใช้ใหม่ (reuse)
  เช่น นาคลาสที่เราเคยสร้างไว้แล้วมาใช้ในโปรแกรมอื่นๆ ได้ หรือ
  เอาคลาสเดิมมาใช้เป็นต้นแบบสร้างคลาสอื่นๆ ที่มีความสามารถเพิ่มขึ้น
  Reuse ทาได้โดย
       การสืบทอดคลาส (Inheritance)
       การประกอบคลาส (Composition)




Object-Oriented Programming 2/2551                                4
"is a" versus "has a" Relationships
    ความสัมพันธ์ระหว่างคลาส 2 แบบ ได้แก่
       ความสัมพันธ์แบบ              is a : การสืบทอดคลาส (Inheritance)
           • คลาสแรกเป็น subclass ของคลาสที่สอง
                           a car is a vehicle
       ความสัมพันธ์แบบ              has a : การประกอบคลาส (Composition)
           • คลาสแรกมีคลาสที่สองเป็น attribute
                        a car has wheels

Object-Oriented Programming 2/2551                                         5
Composition
   การประกอบคลาส เป็นการนาคลาสที่มอยู่มาประกอบเป็นคลาสใหม่
                                   ี
 Example:
                      public class Address {
                        String number;
                        String road;
                         String city;
                         String province;
                         String postcode;
                      }

                      public class Person {
                        String name;
                        String birthDate;
                        Address address;
                      }

Object-Oriented Programming 2/2551                            6
Inheritance การสืบทอด
   การสืบทอด (Inheritance) เป็นคุณสมบัติที่สาคัญของ OOP ที่ทาให้เรา
   สามารถสร้างคลาสใหม่จากคลาสเดิมทีมีอยู่
                                        ่
  คลาสใหม่ที่สร้างขึ้น ขยายคุณสมบัต(attributes)และความสามารถ
                                      ิ
   (behaviour) จากคลาสเดิม
  คลาสเดิมที่ถูกนาคุณสมบัติไปสืบทอด เรียกว่า
         คลาสแม่ (parent class / superclass / based class)
  คลาสใหม่ที่สืบทอดคุณสมบัติมา เรียกว่า
         คลาสลูก (child class / subclass / derived class )


Object-Oriented Programming 2/2551                                 7
Inheritance – class diagram
    A เป็นคลาสแม่ของ B นั่นคือ B สืบทอดคุณสมบัตมาจาก A
                                                ิ
                                                                         A
                                                                       คลาสแม่
                     Vehicle                   สัญลักษณ์ลูกศรแสดงการสืบทอด

                                                                         Bก
                                                                       คลาสลู
 Helicopter            Bicycle                Car


                                     Racing         Sedan
Object-Oriented Programming 2/2551                                               8
Inheritance
  คลาสแม่ จะมีความเป็นกลาง ๆ ทั่ว ๆ ไป (general)
  คลาสลูก จะมีความเฉพาะเจาะจง มีลักษณะเฉพาะบางอย่างแตกต่างกัน
   (specialize)
  คลาสทุกคลาสในจาวา สืบทอดมาจากคลาสที่ชื่อ Object ซึ่งเป็นคลาส
   มาตรฐาน
  Attribute และ method ที่ประกาศในคลาสแม่ ถูกสืบทอดมายังคลาสลูก
   และใช้งานได้เลย โดยไม่ต้องประกาศใหม่
  คลาสลูกสามารถเพิ่ม attribute และ method ใหม่ได้
  คลาสลูกสามารถแก้ไขการทางานในเมธอดที่สืบทอดมาได้

Object-Oriented Programming 2/2551                             9
Inheritance
    Redesign the Student classes with inheritance
                                                       Student
                                                       Id
                       Student                         Name
                                                       Major
                                                       register()
     UnderGradStudent            GradStudent           checkGrade()




                                          UnderGradStudent          GradStudent
                                                                    thesis
                                          checkActivity()           listConference()




Object-Oriented Programming 2/2551                                                     10
Keyword extends
  การระบุว่าคลาสนั้นสืบทอดคุณสมบัติมาจากคลาสใด ทาได้ในการ
   ประกาศคลาสโดยใช้คีย์เวิร์ด extends
  Syntax
     modifier class ชื่อคลาสลูก extends ชื่อคลาสแม่ { }
  เช่น
        public class GradStudent extends Student { }    Employee
        public class Car extends Vehicle { }
        public class Manager extends Employee { }       Manager

Object-Oriented Programming 2/2551                                 11
Ex. InherritanceDemo1




Object-Oriented Programming 2/2551   12
Ex. InherritanceDemo1




Object-Oriented Programming 2/2551   13
Keyword extends

                  Student


UnderGradStudent GradStudent




Object-Oriented Programming 2/2551   14
Keyword extends
  คลาสลูกสามารถใช้งานตัวแปรและเมธอดที่อยู่ในคลาสแม่ได้
  แต่คลาสแม่ไม่สามารถใช้ตัวแปรหรือเมธอดทีประกาศไว้ในคลาสลูก
                                          ่




Object-Oriented Programming 2/2551                             15
java.lang.Object
  ในภาษาจาวา คลาสทุกคลาสสืบทอดมาจากคลาส Object ซึ่งอยู่ใน
   package java.lang
  เมื่อเราประกาศคลาสโดยไม่ระบุว่าจะสืบทอดจากคลาสใด คลาสนันจะ
                                                          ้
   สืบทอดจากคลาส Object อัตโนมัติ

                                                           Object
  แต่ถ้าระบุว่า extends จากคลาสใดก็จะหมายถึงสืบทอดจากคลาสนั้น
                                                           Vehicle
    คลาสในจาวาสืบทอดจากคลาสแม่ได้เพียงคลาสเดียวเท่านั้น
                                                             Car
Object-Oriented Programming 2/2551                            16
The methods of the Object class
  Object เป็นคลาสแม่ของทุกคลาส เมธอดในคลาส Object จึงใช้ในคลาส
   ทุกคลาส
  เมธอดในคลาส Object ดูได้จาก Java API (http://java.sun.com) เช่น
         public String toString() คืนค่า String ที่ใช้แทน object




Object-Oriented Programming 2/2551                                  17
Ex.

                                               Object

                                     ToStringDemo       Radio




Object-Oriented Programming 2/2551                          18
Keyword null
  การระบุให้ตัวแปร object มีค่าเป็น null ทาให้ object ที่เคยถูกอ้างถึงไม่
   สามารถใช้งานได้อีก ซึ่ง object นั้นจะถูกทาลายโดย Garbage Collector
  Garbage Collector ใน JVM ทาหน้าทีทาลาย object ที่ไม่ถูกอ้างถึงด้วยตัว
                                       ่
   แปร object เพื่อคืนหน่วยความจา




Object-Oriented Programming 2/2551                                    19
Method overriding
  การแก้ไขหรือเพิ่มการทางานภายในเมธอดของคลาสลูกทีสืบทอดมาจาก
                                                         ่
   คลาสแม่ เรียกว่า การทา method overriding
  Overridden method คือ เมธอดในคลาสแม่ที่ถูกทาการ override
  Overriding method คือ เมธอดในคลาสลูกที่ทาการ override
  เมธอดนั้นยังต้องมี ชื่อเมธอด ค่าที่ส่งคืนจากเมธอด ชนิดและจานวน
   พารามิเตอร์ เหมือนกับในคลาสแม่




Object-Oriented Programming 2/2551                             20
Ex. Method overriding




Object-Oriented Programming 2/2551                           21
Ex. Method overriding




Object-Oriented Programming 2/2551   22
Ex. Method overriding




Object-Oriented Programming 2/2551   23
Keyword this
 this ใช้ได้กบ 2 กรณี
             ั
  กรณีที่ 1 ใช้อ้างถึงตัวแปรภายในคลาส โดย object ใช้ this ในการอ้างถึง
    reference ของตัวเองเมื่อเรียกใช้ตวแปรหรือเมธอด
                                     ั




Object-Oriented Programming 2/2551                                  24
Keyword this
    กรณีที่ 2 ใช้ this เรียก constructor อื่น ๆ ในคลาส




Object-Oriented Programming 2/2551                        25
Keyword super
 ใช้ super ได้ 2 กรณี
  กรณีที่ 1 ใช้ super เรียกตัวแปรหรือเมธอดในคลาสแม่




Object-Oriented Programming 2/2551                     26
Keyword super




Object-Oriented Programming 2/2551   27
Keyword super
      กรณีที่ 2 ใช้เรียก constructor ของคลาสแม่ให้ทางาน แต่ต้อง
       เรียกที่บรรทัดแรกสุดของ constructor นั้นเท่านั้น




Object-Oriented Programming 2/2551                                 28
Find some errors…




Object-Oriented Programming 2/2551   29
Shadowing Data Fields
  ปกติ คลาสลูกสามารถใช้งานตัวแปรที่ประกาศในคลาสแม่ได้เลย
  แต่ถ้าประกาศตัวแปรในคลาสลูกเหมือนกับคลาสแม่ การอ้างถึงตัวแปร
   นั้นจะเป็นตัวแปรของคลาสลูก
  หากต้องการใช้งานตัวแปรที่อยู่ในคลาสแม่ ต้องใช้ keyword super




Object-Oriented Programming 2/2551                            30
Shadowing Data Fields




Object-Oriented Programming 2/2551   31
Shadowing Data Fields




Object-Oriented Programming 2/2551   32
Keyword final
    Final class : ถ้า class ใดประกาศให้เป็น final จะไม่สามารถนามาสืบทอด
     ได้อีก




                                                    Compile error!!!
                                              InheritanceDemo1.java:12:
                                                cannot inherit from final
                                                       Employee
Object-Oriented Programming 2/2551                                     33
Keyword final
    Final method: ถ้าเมธอดใดเป็น final จะไม่สามารถนามา override ได้อีก




                                                   Compile error!!!
                                             InheritanceDemo1.java:14:
                                           printData() in Manager cannot
                                          override printData() in Employee;
                                              overridden method is final

Object-Oriented Programming 2/2551                                       34
Access modifier
    Access modifier ใช้กาหนดหน้าชื่อคลาส ตัวแปร และเมธอด เพื่อบอก
     ระดับการเข้าใช้งาน แบ่งเป็น 4 ระดับ
        public คลาสอื่นทุกคลาสสามารถเรียกใช้งานได้
       protected คลาสที่เป็นคลาสลูกและคลาสที่อยู่ใน package เดียวกันสามารถ
        เรียกใช้งานได้
       package คลาสที่อยู่ใน package เดียวกันเท่านั้นสามารถเรียกใช้งานได้

       private ตัวแปรและเมธอดที่เป็น private จะถูกเรียกใช้งานได้เฉพาะภายใน
        คลาสเท่านั้น



Object-Oriented Programming 2/2551                                        35
Access modifier
    การใช้งาน access modifier
                                    class   attribute   method
               public                /         /          /
               protected             X         /          /
               package               /         /          /
               private               X         /          /
    การกาหนดให้เป็นระดับ package คือการประกาศคลาส ตัวแปร
     หรือเมธอดที่ไม่ได้ระบุ access modifier ไว้


Object-Oriented Programming 2/2551                                36
Inheriting attributes and methods
    การสืบทอดคลาสนั้น ตัวแปรและเมธอด ที่เป็น private จะไม่ถูกสืบทอด
     ให้แก่คลาสลูก




Object-Oriented Programming 2/2551                                37
Inheriting attributes and methods




Object-Oriented Programming 2/2551    38
Inheriting attributes and methods
  คลาสลูกสามารถเข้าถึง attributed และ method ของคลาสแม่ที่ประกาศ
   เป็น protected ได้ แม้ต่าง packageกัน
  ตัวแปรหรือเมธอดที่เป็น package จะใช้ได้เฉพาะ package เดียวกันเท่านั้น
             package a                   package b
                 A

                       B                    C



Object-Oriented Programming 2/2551                                  39
Inheriting attributes and methods




Object-Oriented Programming 2/2551    40
Inheritance and constructor
    การสร้าง object ของคลาสลูกจะไปเรียก default constructor ในคลาส
     แม่ แต่คลาสลูกไม่สามารถสืบทอด constructor จากคลาสแม่ได้




Object-Oriented Programming 2/2551                                41
Summary
   การ reuse class ทาได้ 2 แบบคือ inheritance & composition
  คลาสลูกสืบทอดได้จากคลาสแม่เพียงคลาสเดียวเท่านั้น
  คลาสลูกเข้าถึงเฉพาะ attribute และ method ที่เป็น public, protected ได้
 แต่เข้าถึง private ไม่ได้
  Method overriding คือการแก้ไขเมธอดที่สืบทอดมาจากคลาสแม่
  this ใช้อ้างถึงตัวแปรและเมธอดในคลาสนั้น
  super ใช้อ้างถึงตัวแปรและเมธอดในคลาสแม่
  Class ที่เป็น final ไม่สามารถสืบทอดได้
  Method ที่เป็น final ไม่สามารถ overrided ได้
  Constructor ไม่สามารถสืบทอดมายังคลาสลูก

Object-Oriented Programming 2/2551                                          42

More Related Content

What's hot

Java Lambda Expressions.pptx
Java Lambda Expressions.pptxJava Lambda Expressions.pptx
Java Lambda Expressions.pptxSameerAhmed593310
 
JavaScript - Chapter 8 - Objects
 JavaScript - Chapter 8 - Objects JavaScript - Chapter 8 - Objects
JavaScript - Chapter 8 - ObjectsWebStackAcademy
 
JavaScript - An Introduction
JavaScript - An IntroductionJavaScript - An Introduction
JavaScript - An IntroductionManvendra Singh
 
JVM for Dummies - OSCON 2011
JVM for Dummies - OSCON 2011JVM for Dummies - OSCON 2011
JVM for Dummies - OSCON 2011Charles Nutter
 
Constructor in Java - ITVoyagers
Constructor in Java - ITVoyagersConstructor in Java - ITVoyagers
Constructor in Java - ITVoyagersITVoyagers
 
Apex Testing and Best Practices
Apex Testing and Best PracticesApex Testing and Best Practices
Apex Testing and Best PracticesJitendra Zaa
 
Java11 New Features
Java11 New FeaturesJava11 New Features
Java11 New FeaturesHaim Michael
 
JavaScript - Chapter 3 - Introduction
 JavaScript - Chapter 3 - Introduction JavaScript - Chapter 3 - Introduction
JavaScript - Chapter 3 - IntroductionWebStackAcademy
 
Test your microservices with REST-Assured
Test your microservices with REST-AssuredTest your microservices with REST-Assured
Test your microservices with REST-AssuredMichel Schudel
 
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...Edureka!
 
Unit testing JavaScript: Jasmine & karma intro
Unit testing JavaScript: Jasmine & karma introUnit testing JavaScript: Jasmine & karma intro
Unit testing JavaScript: Jasmine & karma introMaurice De Beijer [MVP]
 
Spring Boot in Action
Spring Boot in Action Spring Boot in Action
Spring Boot in Action Alex Movila
 
Advanced Web Development in PHP - Understanding REST API
Advanced Web Development in PHP - Understanding REST APIAdvanced Web Development in PHP - Understanding REST API
Advanced Web Development in PHP - Understanding REST APIRasan Samarasinghe
 

What's hot (20)

Object oriented programming With C#
Object oriented programming With C#Object oriented programming With C#
Object oriented programming With C#
 
Angular Unit Testing
Angular Unit TestingAngular Unit Testing
Angular Unit Testing
 
Java Lambda Expressions.pptx
Java Lambda Expressions.pptxJava Lambda Expressions.pptx
Java Lambda Expressions.pptx
 
JavaScript - Chapter 8 - Objects
 JavaScript - Chapter 8 - Objects JavaScript - Chapter 8 - Objects
JavaScript - Chapter 8 - Objects
 
Selenium-Locators
Selenium-LocatorsSelenium-Locators
Selenium-Locators
 
JavaScript - An Introduction
JavaScript - An IntroductionJavaScript - An Introduction
JavaScript - An Introduction
 
Java Object Oriented Programming
Java Object Oriented Programming Java Object Oriented Programming
Java Object Oriented Programming
 
C# Constructors
C# ConstructorsC# Constructors
C# Constructors
 
JVM for Dummies - OSCON 2011
JVM for Dummies - OSCON 2011JVM for Dummies - OSCON 2011
JVM for Dummies - OSCON 2011
 
Page object pattern
Page object patternPage object pattern
Page object pattern
 
Constructor in Java - ITVoyagers
Constructor in Java - ITVoyagersConstructor in Java - ITVoyagers
Constructor in Java - ITVoyagers
 
Apex Testing and Best Practices
Apex Testing and Best PracticesApex Testing and Best Practices
Apex Testing and Best Practices
 
Java11 New Features
Java11 New FeaturesJava11 New Features
Java11 New Features
 
JavaScript - Chapter 3 - Introduction
 JavaScript - Chapter 3 - Introduction JavaScript - Chapter 3 - Introduction
JavaScript - Chapter 3 - Introduction
 
Test your microservices with REST-Assured
Test your microservices with REST-AssuredTest your microservices with REST-Assured
Test your microservices with REST-Assured
 
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...
 
Bootstrap 4 ppt
Bootstrap 4 pptBootstrap 4 ppt
Bootstrap 4 ppt
 
Unit testing JavaScript: Jasmine & karma intro
Unit testing JavaScript: Jasmine & karma introUnit testing JavaScript: Jasmine & karma intro
Unit testing JavaScript: Jasmine & karma intro
 
Spring Boot in Action
Spring Boot in Action Spring Boot in Action
Spring Boot in Action
 
Advanced Web Development in PHP - Understanding REST API
Advanced Web Development in PHP - Understanding REST APIAdvanced Web Development in PHP - Understanding REST API
Advanced Web Development in PHP - Understanding REST API
 

Similar to 8.Inheritance

Java-Chapter 12 Classes and Objects
Java-Chapter 12 Classes and ObjectsJava-Chapter 12 Classes and Objects
Java-Chapter 12 Classes and ObjectsWongyos Keardsri
 
Java Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented ConceptJava Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented ConceptIMC Institute
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นTua Tor
 
บทที่ 8 คุณสมบัติก
บทที่ 8 คุณสมบัติกบทที่ 8 คุณสมบัติก
บทที่ 8 คุณสมบัติกTheeravaj Tum
 
คลาสและโปรแกรม
คลาสและโปรแกรมคลาสและโปรแกรม
คลาสและโปรแกรมN'Name Phuthiphong
 
งานกลุ่มคอมกลุ่ม5
งานกลุ่มคอมกลุ่ม5งานกลุ่มคอมกลุ่ม5
งานกลุ่มคอมกลุ่ม5Boss'Thanasit Tassana
 
พื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาพื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาT'tle Tanwarat
 
Basic java need to know for newbie android developer
Basic java need to know for newbie android developerBasic java need to know for newbie android developer
Basic java need to know for newbie android developerAppcodev
 
1.Introduction to java
1.Introduction to java1.Introduction to java
1.Introduction to javaUsableLabs
 
อ.ทรงศักดิ์งานกลุ่ม
อ.ทรงศักดิ์งานกลุ่มอ.ทรงศักดิ์งานกลุ่ม
อ.ทรงศักดิ์งานกลุ่มKEk YourJust'one
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นPornsitaintharak
 

Similar to 8.Inheritance (19)

Java-Chapter 12 Classes and Objects
Java-Chapter 12 Classes and ObjectsJava-Chapter 12 Classes and Objects
Java-Chapter 12 Classes and Objects
 
Java Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented ConceptJava Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented Concept
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
 
Java intro
Java introJava intro
Java intro
 
บทที่ 8 คุณสมบัติก
บทที่ 8 คุณสมบัติกบทที่ 8 คุณสมบัติก
บทที่ 8 คุณสมบัติก
 
Java 7&12 6 2
Java 7&12 6 2Java 7&12 6 2
Java 7&12 6 2
 
Chapter1 uml3
Chapter1 uml3Chapter1 uml3
Chapter1 uml3
 
Chapter1 uml3
Chapter1 uml3Chapter1 uml3
Chapter1 uml3
 
Lec12 oop in_php
Lec12 oop in_phpLec12 oop in_php
Lec12 oop in_php
 
3.Expression
3.Expression3.Expression
3.Expression
 
คลาสและโปรแกรม
คลาสและโปรแกรมคลาสและโปรแกรม
คลาสและโปรแกรม
 
งานกลุ่มคอมกลุ่ม5
งานกลุ่มคอมกลุ่ม5งานกลุ่มคอมกลุ่ม5
งานกลุ่มคอมกลุ่ม5
 
พื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาพื้นฐานภาษาจาวา
พื้นฐานภาษาจาวา
 
Computer Programming 4
Computer Programming 4Computer Programming 4
Computer Programming 4
 
Basic java need to know for newbie android developer
Basic java need to know for newbie android developerBasic java need to know for newbie android developer
Basic java need to know for newbie android developer
 
1.Introduction to java
1.Introduction to java1.Introduction to java
1.Introduction to java
 
Class1
Class1Class1
Class1
 
อ.ทรงศักดิ์งานกลุ่ม
อ.ทรงศักดิ์งานกลุ่มอ.ทรงศักดิ์งานกลุ่ม
อ.ทรงศักดิ์งานกลุ่ม
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
 

More from UsableLabs

Vocabulary for portal
Vocabulary for portalVocabulary for portal
Vocabulary for portalUsableLabs
 
การจัดการความรู้
การจัดการความรู้การจัดการความรู้
การจัดการความรู้UsableLabs
 
การส่งเสริมการขายที่มุ่งสู่ผู้บริโภค
การส่งเสริมการขายที่มุ่งสู่ผู้บริโภคการส่งเสริมการขายที่มุ่งสู่ผู้บริโภค
การส่งเสริมการขายที่มุ่งสู่ผู้บริโภคUsableLabs
 
อาหารและโภชนาการ เรื่อง สารกันบูด
อาหารและโภชนาการ เรื่อง สารกันบูดอาหารและโภชนาการ เรื่อง สารกันบูด
อาหารและโภชนาการ เรื่อง สารกันบูดUsableLabs
 
2.Java fundamentals
2.Java fundamentals2.Java fundamentals
2.Java fundamentalsUsableLabs
 
ส่งยิ้ม ส่งรัก รับปีใหม่
ส่งยิ้ม ส่งรัก รับปีใหม่ส่งยิ้ม ส่งรัก รับปีใหม่
ส่งยิ้ม ส่งรัก รับปีใหม่UsableLabs
 
30 web (blog2book)
30 web (blog2book)30 web (blog2book)
30 web (blog2book)UsableLabs
 
ภาพสวยๆ จากคนรักมวลเมฆ
ภาพสวยๆ จากคนรักมวลเมฆภาพสวยๆ จากคนรักมวลเมฆ
ภาพสวยๆ จากคนรักมวลเมฆUsableLabs
 
10 ข้อผิดพลาดเกี่ยวกับ usability ที่ไม่ควรทำ
10 ข้อผิดพลาดเกี่ยวกับ usability ที่ไม่ควรทำ10 ข้อผิดพลาดเกี่ยวกับ usability ที่ไม่ควรทำ
10 ข้อผิดพลาดเกี่ยวกับ usability ที่ไม่ควรทำUsableLabs
 
สร้างเว็บไซต์โดยใช้หลัก Usability
สร้างเว็บไซต์โดยใช้หลัก Usability สร้างเว็บไซต์โดยใช้หลัก Usability
สร้างเว็บไซต์โดยใช้หลัก Usability UsableLabs
 
แนะนำวิธีการจดทะเบียนโดเมน
แนะนำวิธีการจดทะเบียนโดเมนแนะนำวิธีการจดทะเบียนโดเมน
แนะนำวิธีการจดทะเบียนโดเมนUsableLabs
 
correct_Portal manual
correct_Portal manual correct_Portal manual
correct_Portal manual UsableLabs
 
เทคโนโลยีและนวัตกรรมการศึกษา
เทคโนโลยีและนวัตกรรมการศึกษาเทคโนโลยีและนวัตกรรมการศึกษา
เทคโนโลยีและนวัตกรรมการศึกษาUsableLabs
 
Portal profile
Portal profilePortal profile
Portal profileUsableLabs
 

More from UsableLabs (20)

Vocabulary for portal
Vocabulary for portalVocabulary for portal
Vocabulary for portal
 
การจัดการความรู้
การจัดการความรู้การจัดการความรู้
การจัดการความรู้
 
การส่งเสริมการขายที่มุ่งสู่ผู้บริโภค
การส่งเสริมการขายที่มุ่งสู่ผู้บริโภคการส่งเสริมการขายที่มุ่งสู่ผู้บริโภค
การส่งเสริมการขายที่มุ่งสู่ผู้บริโภค
 
อาหารและโภชนาการ เรื่อง สารกันบูด
อาหารและโภชนาการ เรื่อง สารกันบูดอาหารและโภชนาการ เรื่อง สารกันบูด
อาหารและโภชนาการ เรื่อง สารกันบูด
 
4.Oop
4.Oop4.Oop
4.Oop
 
2.Java fundamentals
2.Java fundamentals2.Java fundamentals
2.Java fundamentals
 
ส่งยิ้ม ส่งรัก รับปีใหม่
ส่งยิ้ม ส่งรัก รับปีใหม่ส่งยิ้ม ส่งรัก รับปีใหม่
ส่งยิ้ม ส่งรัก รับปีใหม่
 
30 web (blog2book)
30 web (blog2book)30 web (blog2book)
30 web (blog2book)
 
ภาพสวยๆ จากคนรักมวลเมฆ
ภาพสวยๆ จากคนรักมวลเมฆภาพสวยๆ จากคนรักมวลเมฆ
ภาพสวยๆ จากคนรักมวลเมฆ
 
10 ข้อผิดพลาดเกี่ยวกับ usability ที่ไม่ควรทำ
10 ข้อผิดพลาดเกี่ยวกับ usability ที่ไม่ควรทำ10 ข้อผิดพลาดเกี่ยวกับ usability ที่ไม่ควรทำ
10 ข้อผิดพลาดเกี่ยวกับ usability ที่ไม่ควรทำ
 
สร้างเว็บไซต์โดยใช้หลัก Usability
สร้างเว็บไซต์โดยใช้หลัก Usability สร้างเว็บไซต์โดยใช้หลัก Usability
สร้างเว็บไซต์โดยใช้หลัก Usability
 
แนะนำวิธีการจดทะเบียนโดเมน
แนะนำวิธีการจดทะเบียนโดเมนแนะนำวิธีการจดทะเบียนโดเมน
แนะนำวิธีการจดทะเบียนโดเมน
 
Health
HealthHealth
Health
 
Money
MoneyMoney
Money
 
correct_Portal manual
correct_Portal manual correct_Portal manual
correct_Portal manual
 
Lit
LitLit
Lit
 
Blog
BlogBlog
Blog
 
เทคโนโลยีและนวัตกรรมการศึกษา
เทคโนโลยีและนวัตกรรมการศึกษาเทคโนโลยีและนวัตกรรมการศึกษา
เทคโนโลยีและนวัตกรรมการศึกษา
 
Portal profile
Portal profilePortal profile
Portal profile
 
Card sorting
Card sortingCard sorting
Card sorting
 

8.Inheritance

  • 1. 976-140 Object-Oriented Programming 344-202 Introduction to OOP การโปรแกรมเชิงวัตถุ 8. Inheritance Faculty of Technology and Environment Prince of Songkla University, Phuket Campus 2/2551
  • 2. Why inheritance?  How to programming for all characters in the game? Object-Oriented Programming 2/2551 2
  • 3. Why inheritance? Student GradStudent Staff Lecturer Id Id Id Id Name Name Name Name Major Major Office Office register() thesis Salary Salary checkGrade() register() paySalary() assignCourse() checkActivity() checkGrade() checkDayOff() paySalary() listConference() checkDayOff() Reus e Object-Oriented Programming 2/2551 3
  • 4. Reuse  OOP เป็นภาษาที่สนับสนุนการนาคลาสกลับไปใช้ใหม่ (reuse)  เช่น นาคลาสที่เราเคยสร้างไว้แล้วมาใช้ในโปรแกรมอื่นๆ ได้ หรือ  เอาคลาสเดิมมาใช้เป็นต้นแบบสร้างคลาสอื่นๆ ที่มีความสามารถเพิ่มขึ้น  Reuse ทาได้โดย  การสืบทอดคลาส (Inheritance)  การประกอบคลาส (Composition) Object-Oriented Programming 2/2551 4
  • 5. "is a" versus "has a" Relationships  ความสัมพันธ์ระหว่างคลาส 2 แบบ ได้แก่  ความสัมพันธ์แบบ is a : การสืบทอดคลาส (Inheritance) • คลาสแรกเป็น subclass ของคลาสที่สอง a car is a vehicle  ความสัมพันธ์แบบ has a : การประกอบคลาส (Composition) • คลาสแรกมีคลาสที่สองเป็น attribute a car has wheels Object-Oriented Programming 2/2551 5
  • 6. Composition  การประกอบคลาส เป็นการนาคลาสที่มอยู่มาประกอบเป็นคลาสใหม่ ี Example: public class Address { String number; String road; String city; String province; String postcode; } public class Person { String name; String birthDate; Address address; } Object-Oriented Programming 2/2551 6
  • 7. Inheritance การสืบทอด  การสืบทอด (Inheritance) เป็นคุณสมบัติที่สาคัญของ OOP ที่ทาให้เรา สามารถสร้างคลาสใหม่จากคลาสเดิมทีมีอยู่ ่  คลาสใหม่ที่สร้างขึ้น ขยายคุณสมบัต(attributes)และความสามารถ ิ (behaviour) จากคลาสเดิม  คลาสเดิมที่ถูกนาคุณสมบัติไปสืบทอด เรียกว่า คลาสแม่ (parent class / superclass / based class)  คลาสใหม่ที่สืบทอดคุณสมบัติมา เรียกว่า คลาสลูก (child class / subclass / derived class ) Object-Oriented Programming 2/2551 7
  • 8. Inheritance – class diagram  A เป็นคลาสแม่ของ B นั่นคือ B สืบทอดคุณสมบัตมาจาก A ิ A คลาสแม่ Vehicle สัญลักษณ์ลูกศรแสดงการสืบทอด Bก คลาสลู Helicopter Bicycle Car Racing Sedan Object-Oriented Programming 2/2551 8
  • 9. Inheritance  คลาสแม่ จะมีความเป็นกลาง ๆ ทั่ว ๆ ไป (general)  คลาสลูก จะมีความเฉพาะเจาะจง มีลักษณะเฉพาะบางอย่างแตกต่างกัน (specialize)  คลาสทุกคลาสในจาวา สืบทอดมาจากคลาสที่ชื่อ Object ซึ่งเป็นคลาส มาตรฐาน  Attribute และ method ที่ประกาศในคลาสแม่ ถูกสืบทอดมายังคลาสลูก และใช้งานได้เลย โดยไม่ต้องประกาศใหม่  คลาสลูกสามารถเพิ่ม attribute และ method ใหม่ได้  คลาสลูกสามารถแก้ไขการทางานในเมธอดที่สืบทอดมาได้ Object-Oriented Programming 2/2551 9
  • 10. Inheritance  Redesign the Student classes with inheritance Student Id Student Name Major register() UnderGradStudent GradStudent checkGrade() UnderGradStudent GradStudent thesis checkActivity() listConference() Object-Oriented Programming 2/2551 10
  • 11. Keyword extends  การระบุว่าคลาสนั้นสืบทอดคุณสมบัติมาจากคลาสใด ทาได้ในการ ประกาศคลาสโดยใช้คีย์เวิร์ด extends  Syntax modifier class ชื่อคลาสลูก extends ชื่อคลาสแม่ { }  เช่น public class GradStudent extends Student { } Employee public class Car extends Vehicle { } public class Manager extends Employee { } Manager Object-Oriented Programming 2/2551 11
  • 14. Keyword extends Student UnderGradStudent GradStudent Object-Oriented Programming 2/2551 14
  • 15. Keyword extends  คลาสลูกสามารถใช้งานตัวแปรและเมธอดที่อยู่ในคลาสแม่ได้  แต่คลาสแม่ไม่สามารถใช้ตัวแปรหรือเมธอดทีประกาศไว้ในคลาสลูก ่ Object-Oriented Programming 2/2551 15
  • 16. java.lang.Object  ในภาษาจาวา คลาสทุกคลาสสืบทอดมาจากคลาส Object ซึ่งอยู่ใน package java.lang  เมื่อเราประกาศคลาสโดยไม่ระบุว่าจะสืบทอดจากคลาสใด คลาสนันจะ ้ สืบทอดจากคลาส Object อัตโนมัติ Object  แต่ถ้าระบุว่า extends จากคลาสใดก็จะหมายถึงสืบทอดจากคลาสนั้น Vehicle  คลาสในจาวาสืบทอดจากคลาสแม่ได้เพียงคลาสเดียวเท่านั้น Car Object-Oriented Programming 2/2551 16
  • 17. The methods of the Object class  Object เป็นคลาสแม่ของทุกคลาส เมธอดในคลาส Object จึงใช้ในคลาส ทุกคลาส  เมธอดในคลาส Object ดูได้จาก Java API (http://java.sun.com) เช่น  public String toString() คืนค่า String ที่ใช้แทน object Object-Oriented Programming 2/2551 17
  • 18. Ex. Object ToStringDemo Radio Object-Oriented Programming 2/2551 18
  • 19. Keyword null  การระบุให้ตัวแปร object มีค่าเป็น null ทาให้ object ที่เคยถูกอ้างถึงไม่ สามารถใช้งานได้อีก ซึ่ง object นั้นจะถูกทาลายโดย Garbage Collector  Garbage Collector ใน JVM ทาหน้าทีทาลาย object ที่ไม่ถูกอ้างถึงด้วยตัว ่ แปร object เพื่อคืนหน่วยความจา Object-Oriented Programming 2/2551 19
  • 20. Method overriding  การแก้ไขหรือเพิ่มการทางานภายในเมธอดของคลาสลูกทีสืบทอดมาจาก ่ คลาสแม่ เรียกว่า การทา method overriding  Overridden method คือ เมธอดในคลาสแม่ที่ถูกทาการ override  Overriding method คือ เมธอดในคลาสลูกที่ทาการ override  เมธอดนั้นยังต้องมี ชื่อเมธอด ค่าที่ส่งคืนจากเมธอด ชนิดและจานวน พารามิเตอร์ เหมือนกับในคลาสแม่ Object-Oriented Programming 2/2551 20
  • 21. Ex. Method overriding Object-Oriented Programming 2/2551 21
  • 22. Ex. Method overriding Object-Oriented Programming 2/2551 22
  • 23. Ex. Method overriding Object-Oriented Programming 2/2551 23
  • 24. Keyword this this ใช้ได้กบ 2 กรณี ั  กรณีที่ 1 ใช้อ้างถึงตัวแปรภายในคลาส โดย object ใช้ this ในการอ้างถึง reference ของตัวเองเมื่อเรียกใช้ตวแปรหรือเมธอด ั Object-Oriented Programming 2/2551 24
  • 25. Keyword this  กรณีที่ 2 ใช้ this เรียก constructor อื่น ๆ ในคลาส Object-Oriented Programming 2/2551 25
  • 26. Keyword super ใช้ super ได้ 2 กรณี  กรณีที่ 1 ใช้ super เรียกตัวแปรหรือเมธอดในคลาสแม่ Object-Oriented Programming 2/2551 26
  • 28. Keyword super  กรณีที่ 2 ใช้เรียก constructor ของคลาสแม่ให้ทางาน แต่ต้อง เรียกที่บรรทัดแรกสุดของ constructor นั้นเท่านั้น Object-Oriented Programming 2/2551 28
  • 29. Find some errors… Object-Oriented Programming 2/2551 29
  • 30. Shadowing Data Fields  ปกติ คลาสลูกสามารถใช้งานตัวแปรที่ประกาศในคลาสแม่ได้เลย  แต่ถ้าประกาศตัวแปรในคลาสลูกเหมือนกับคลาสแม่ การอ้างถึงตัวแปร นั้นจะเป็นตัวแปรของคลาสลูก  หากต้องการใช้งานตัวแปรที่อยู่ในคลาสแม่ ต้องใช้ keyword super Object-Oriented Programming 2/2551 30
  • 31. Shadowing Data Fields Object-Oriented Programming 2/2551 31
  • 32. Shadowing Data Fields Object-Oriented Programming 2/2551 32
  • 33. Keyword final  Final class : ถ้า class ใดประกาศให้เป็น final จะไม่สามารถนามาสืบทอด ได้อีก Compile error!!! InheritanceDemo1.java:12: cannot inherit from final Employee Object-Oriented Programming 2/2551 33
  • 34. Keyword final  Final method: ถ้าเมธอดใดเป็น final จะไม่สามารถนามา override ได้อีก Compile error!!! InheritanceDemo1.java:14: printData() in Manager cannot override printData() in Employee; overridden method is final Object-Oriented Programming 2/2551 34
  • 35. Access modifier  Access modifier ใช้กาหนดหน้าชื่อคลาส ตัวแปร และเมธอด เพื่อบอก ระดับการเข้าใช้งาน แบ่งเป็น 4 ระดับ  public คลาสอื่นทุกคลาสสามารถเรียกใช้งานได้  protected คลาสที่เป็นคลาสลูกและคลาสที่อยู่ใน package เดียวกันสามารถ เรียกใช้งานได้  package คลาสที่อยู่ใน package เดียวกันเท่านั้นสามารถเรียกใช้งานได้  private ตัวแปรและเมธอดที่เป็น private จะถูกเรียกใช้งานได้เฉพาะภายใน คลาสเท่านั้น Object-Oriented Programming 2/2551 35
  • 36. Access modifier  การใช้งาน access modifier  class attribute method  public / / /  protected X / /  package / / /  private X / /  การกาหนดให้เป็นระดับ package คือการประกาศคลาส ตัวแปร หรือเมธอดที่ไม่ได้ระบุ access modifier ไว้ Object-Oriented Programming 2/2551 36
  • 37. Inheriting attributes and methods  การสืบทอดคลาสนั้น ตัวแปรและเมธอด ที่เป็น private จะไม่ถูกสืบทอด ให้แก่คลาสลูก Object-Oriented Programming 2/2551 37
  • 38. Inheriting attributes and methods Object-Oriented Programming 2/2551 38
  • 39. Inheriting attributes and methods  คลาสลูกสามารถเข้าถึง attributed และ method ของคลาสแม่ที่ประกาศ เป็น protected ได้ แม้ต่าง packageกัน  ตัวแปรหรือเมธอดที่เป็น package จะใช้ได้เฉพาะ package เดียวกันเท่านั้น package a package b A B C Object-Oriented Programming 2/2551 39
  • 40. Inheriting attributes and methods Object-Oriented Programming 2/2551 40
  • 41. Inheritance and constructor  การสร้าง object ของคลาสลูกจะไปเรียก default constructor ในคลาส แม่ แต่คลาสลูกไม่สามารถสืบทอด constructor จากคลาสแม่ได้ Object-Oriented Programming 2/2551 41
  • 42. Summary  การ reuse class ทาได้ 2 แบบคือ inheritance & composition  คลาสลูกสืบทอดได้จากคลาสแม่เพียงคลาสเดียวเท่านั้น  คลาสลูกเข้าถึงเฉพาะ attribute และ method ที่เป็น public, protected ได้ แต่เข้าถึง private ไม่ได้  Method overriding คือการแก้ไขเมธอดที่สืบทอดมาจากคลาสแม่  this ใช้อ้างถึงตัวแปรและเมธอดในคลาสนั้น  super ใช้อ้างถึงตัวแปรและเมธอดในคลาสแม่  Class ที่เป็น final ไม่สามารถสืบทอดได้  Method ที่เป็น final ไม่สามารถ overrided ได้  Constructor ไม่สามารถสืบทอดมายังคลาสลูก Object-Oriented Programming 2/2551 42