Inheritance.

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โครงสร้างโปรแกรมภาษา JAVA
Advertisements

Suphot Sawattiwong Array ใน C# Suphot Sawattiwong
Suphot Sawattiwong Function ใน C# Suphot Sawattiwong
การจัดการความผิดพลาด
ข้อตกลงในการเรียน พื้นฐานที่จำเป็นสำหรับนำไปใช้ในเรื่อง
Register Allocation and Graph Coloring
ฟังก์ชัน (Function).
คืออะไร? คือ queue ที่ access element ตามความสำคัญของตัว element นั้น
File.
Object and classes.
Week 6 ประกาศค่าตัวแปร.
05_3_Constructor.
ปฏิบัติการครั้งที่ 9 ฟังก์ชัน.
การเขียนโปรแกรมภาษาจาวาตอนที่ ๓
สมการเชิงอนุพันธ์อย่างง่าย
ครั้งที่ 7 Composition.
หลักการเชิงวัตถุ อาจารย์ศิริพร ศักดิ์บุญญารัตน์
Selected Topics in IT (Java)
Network programming Asst. Prof. Dr. Choopan Rattanapoka
การสืบทอด (Inheritance)
การเขียนโปรแกรมเชิงวัตถุ ด้วยภาษาจาวา
อสมการ (Inequalities)
คลาสและวัตถุ (2) (Class & Object)
บทที่ 1 หลักการเขียนโปรแกรมเชิงวัตถุ
คลาสและวัตถุ (2) (Class & Object)
คลาสและวัตถุ (4) (Class & Object)
คลาสและวัตถุ (3) (Class & Object). w5_000.rar การใช้งานเมธอดภายในคลาสเดียวกัน ข้อ 24, 25 as5_000.rar การใช้งานเมธอดภายในคลาสเดียวกัน ข้อ 23 2.
คลาสและวัตถุ (4) (Class & Object)
บทที่ 4 Method (1).
การสืบทอดคุณสมบัติ (Inheritance)
Generalization & Specialization
Lecture 9 Class (คลาส) To do: Hand back assignments
Inheritance การสืบทอดคลาส
รู้จักและใช้งาน Applet
บทที่ 6 เมธอด.
ทำงานกับ File และStream
ทำไมคนจึงถือตน หรือยกตน
เมธอดคือหน้าที่การงานของวัตถุให้เรียกใช้
ความสัมพันธ์ระหว่างคลาส (Class Relationship)
Method of Class อ.สุพจน์ สิงหัษฐิต
Lec03 :: หลักการเชิงออปเจ็ค (Object Oriented Concept)
Nattapong Songneam BankAccount – Example Nattapong Songneam
วิธีประสบความสำเร็จในทุกเรื่อง
เสรี ชิโนดม ฟังก์ชัน เสรี ชิโนดม
วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)
Object-Oriented Programming
บทที่ 3 Class and Object (2).
คำสั่งรับค่าและฟังก์ชันทางคณิตศาสตร์
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
Java Programming Java Structure and Datatype,Variable
BCS 121 บท 5 การโปรแกรมเชิงวัตถุ (Object-Oriented Programming)
สายอักขระ เขียนโปรแกรม Java เบื้องต้น.
ซุปเปอร์แมน s ตอน สมการเชิงเส้นตัวแปรเดียวกู้โลก.
การสืบทอด (inheritance)
chapter5 - คลาสนามธรรม - อินเตอร์เฟสคลาส
TECH30201 Object-Oriented Programming
“คำพูดคุณครู”.
Inheritance และ Encapsulation.  การสร้างหรือพัฒนาคลาสใหม่จากคลาสเดิมที่ มีอยู่แล้ว  คลาสใหม่จะนำแอตทริบิวต์และเมธอดของ คลาสเดิมมาใช้  เป็นการถ่ายทอดคุณสมบัติจากคลาสหนึ่งสู่อีก.
เครื่องมือที่ใช้ JUnit4.8.1 on Eclipse SDK3.5.2 ขึ้นไป
เมธอดคือหน้าที่การงานของวัตถุให้เรียกใช้
คอนสตรัคเตอร์ (Constructor)
Function ธนวัฒน์ แซ่ เอียบ. What is a function ฟังก์ชันในภาษา C เป็นโปรแกรมที่ถูกออกแบบมาเพื่อ ใช้แก้ปัญหางานใดงานหนึ่งโดยเฉพาะ ฟังก์ชันจะเปลี่ยน input.
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
Powerpoint Templates Page 1 Powerpoint Templates Selection Structure โครงสร้างการทำงานแบบทางเลือก.
chapter 2 - Construction and destruction - Overloading method
เริ่มต้นเขียนโปรแกรมภาษาจา วา (Introduction to JAVA Programming)
Chapter 6 Abstract Class and Interface
บทที่ 3 การสืบทอด (Inheritance)
Object and classes.
Inheritance and Method Overriding
ใบสำเนางานนำเสนอ:

inheritance

public class SavingAccount extends BankAccount{ private double interestRate; … public void addInterest(){ double interest = getBalance() * interestRate/100; deposit(interest); } ถึงจะเป็นสับคลาส ก็ต้องใช้เมธอดเพื่อให้อ่าน private variable ได้

บางคนใช้วิธีแก้ผิดๆ นึกว่าจะเข้าถึง private variable ได้ ด้วยการนิยามตัวแปรใหม่ แต่ว่ามันผิดนะ public class SavingAccount extends BankAccount{ private double balance; ไอ้นี่มันเป็นอีกตัวแปรนึง สรุปคือ ตอนนี้ คลาสนี้จะมีตัวแปร balance สองตัว ตัวนึงมาจากBankAccount

public class CheckingAccount extends BankAccount{ public void deposit(double amount){ counter++ ; // นี่คือตรงที่มีเพิ่มมาจากของเดิม deposit(amount); //พยายามเรียกเมธอดของ superclass } นี่คือการ override แต่นี่จะกลายเป็นเรียกตัวเอง infinite ต้องใช้ super.deposit(amount) แทน

ในการเขียนสับคลาส ต้องระวัง overload โดยไม่ตั้งใจ public class CheckingAccount extends BankAccount{ public void deposit(int amount){ Type ของพารามิเตอร์ เป็นคนละอันกับของเดิม ดังนั้นจาวาจะนึกว่าเขียนเมธอดขึ้นใหม่ ไม่ได้ override ของเก่า

คอนสตรัคเตอร์ public class CheckingAccount extends BankAccount{ public CheckingAccount(double initialBalance){ super(initialBalance); counter = 0 ; } เรียกโค้ดที่เขียนไว้ในคอนสตรัคเตอร์ของซุปเปอร์คลาส การเรียกคอนสตรัคเตอร์ของซุปเปอร์คลาสต้องเป็นบรรทัดแรกเสมอ ถ้าเราไม่เรียกคอนสตรัคเตอร์ของซุปเปอร์คลาส จาวาจะเรียก super() ให้ แต่ถ้าในซุปเปอร์คลาสเราเขียนแต่คอนสตรัคเตอร์ที่มีพารามิเตอร์ จาวาจะถือว่าไม่มีการเขียนคอนสตรัคเตอร์ที่ไม่มีพารามิเตอร์เอาไว้เลย และจะ error

การ convert type SavingAccount a = new SavingAccount(10.0); BankAccount anAccount = a; // อันนี้ทำได้โอเค Object anObject = a; // นี่ก็ทำได้โอเค anAccount.deposit(1000);//ok anAccount.addInterest(); // ทำไม่ได้ จะมีคำถามคือ แล้วจะทำให้มันเรียกเมธอดได้น้อยลงทำไม

มันก็มีที่ต้องใช้ type ของตัวที่เรียกเมธอดได้น้อยกว่า เช่น Public void transfer(double amount, BankAccount other){ withdraw(amount); other.deposit(amount); } .... CheckingAccount myAcc = new CheckingAccount(..); momAccount.transfer(1000,myAcc); อันนี้ใช้ใน transfer ได้ ไง เพราะ transfer มันควรจะใช้กับบัญชีธนาคารแบบไหนก็ได้

ถ้าต้องการเปลี่ยน type อีกข้าง If (anObject instanceof BankAccount){ BankAccount anAccount = (BankAccount) anObject; }

ดูว่าเมธอดไหนถูกเรียก BankAccount anAccount = new CheckingAccount(); anAccount.deposit(1000); ทั้ง BankAccount และ CheckingAccount มีเมธอด deposit ทั้งคู่ ตกลงมันเรียกอันไหน สองขั้นตอน อย่าลืม