อินเตอร์เฟส (Interface)

Slides:



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

Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Java Programming Language.
Introduction to Java Graphic 2D
การเขียนโปรแกรมภาษาจาวาตอนที่ ๓
Selected Topics in IT (Java)
การสืบทอด (Inheritance)
Introduction to Digital System
Computer Architecture and Assembly Language
การพัฒนาเว็บด้วยโปรแกรมสำเร็จรูป
การพัฒนาเว็บด้วยโปรแกรมสำเร็จรูป
การพัฒนาเว็บด้วยโปรแกรมสำเร็จรูป
การพัฒนาเว็บด้วยโปรแกรมสำเร็จรูป
Human and Computer Interaction
LOGO Array. ประเภทของ Array - อาเรย์ 1 มิติ (One) - อาเรย์ 2 มิติ (Two) - อาเรย์ 3 มิติ (Three) 2.
คลาสและวัตถุ (2) (Class & Object)
คลาสและวัตถุ (2) (Class & Object)
บทที่ 4 Method (1).
String Class มหาวิทยาลัยเนชั่น การโปรแกรมเชิงวัตถุด้วยภาษา JAVA
input from keyboard มหาวิทยาลัยเนชั่น การโปรแกรมเชิงวัตถุด้วยภาษา JAVA
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 3 มิถุนายน 2550 Method of Class มหาวิทยาลัยเนชั่น.
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 7 มิถุนายน 2556 Text File Processing มหาวิทยาลัยเนชั่น.
Page: 1 การโปรแกรมเชิงวัตถุด้วยภาษา JAVA บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 22 มิถุนายน 2550 ความผิดพลาดที่พบ บ่อย มหาวิทยาลัยเนชั่น.
JAVA PROGRAMMING PART IV.
Method of Class อ.สุพจน์ สิงหัษฐิต
บทที่ 3 Class and Object (2).
Java Programming Java Structure and Datatype,Variable
การจัดวางคอมโพเนนต์กราฟิก
chapter5 - คลาสนามธรรม - อินเตอร์เฟสคลาส
Inheritance และ Encapsulation.  การสร้างหรือพัฒนาคลาสใหม่จากคลาสเดิมที่ มีอยู่แล้ว  คลาสใหม่จะนำแอตทริบิวต์และเมธอดของ คลาสเดิมมาใช้  เป็นการถ่ายทอดคุณสมบัติจากคลาสหนึ่งสู่อีก.
Powerpoint Templates Page 1 Powerpoint Templates Selection Structure โครงสร้างการทำงานแบบทางเลือก.
Chapter 6 Abstract Class and Interface
การเขียนโปรแกรมบนมาตรฐานเปิด โครงสร้างโปรแกรม public class HelloWorld { public static void main(String[] args) { System.out.println(“Hello World”);
Introduction to Intelligent Systems
การประมวลผลแบบวน ( LOOP )
การเขียนโปรแกรมบนมาตรฐานเปิด
การติดต่อกับฐานข้อมูล(MySQL)
WEEK5-2: 14 SEP 2017 Input / Output Selection Statement
Handling Exceptions & database
Basic Java Programming
บทที่ 5 ระบบปฏิบัติการเครือข่าย
Chapter 9 โปรแกรมสำเร็จรูปกับการวิเคราะห์ข้อมูล
พื้นฐานโปรแกรมภาษาจาวา (Overview of Java Programming Language)
Object-Oriented Programming Paradigm
Chapter 5 การจัดการข้อผิดพลาด (Exception Handling)
Research of Performing Arts
เครื่องมือที่ใช้ JUnit4.8.1 on Eclipse SDK3.5.2 ขึ้นไป
Chapter 7 การสร้างร้านค้าบนเว็บ Edit
Chapter 8 การประชาสัมพันธ์ร้านค้าบนอินเทอร์เน็ต Edit
ครูสมนึก แสงศรีจันทร์
การท่องเที่ยวเชิงบำบัดรักษา/ การท่องเที่ยวเชิงการแพทย์
Chapter 1 ความรู้เบื้องต้นในเทคโนโลยีอินเตอร์เน็ต Edit
Chapter 9 กฎหมายพาณิชย์ธุรกรรมทางอิเล็กทรอนิกส Edit
Abstract Class and Interface
ALLPPT.com _ Free PowerPoint Templates, Diagrams and Charts
การเขียนโปรแกรมบนมาตรฐานเปิด
คุณสมบัติเชิงวัตถุ Chapter 6 Edit
ระบบสารสนเทศอนามัยสิ่งแวดล้อมของประเทศไทย
Inheritance and Encapsulation
Digital image Processing
การพัฒนาเว็บด้วยโปรแกรมสำเร็จรูป
โครงการเสวนาระบบบัญชีสามมิติและงานบัญชี
บทที่ 2 การบริการบนระบบประมวลผลแบบกลุ่มเมฆ (Cloud Computing Service)
1. ความหมายของการสื่อสารข้อมูล
การเขียนโปรแกรมคอมพิวเตอร์ (Computer Programming)
อุทธรณ์,ฎีกา.
Digital image Processing By Asst. Prof. Juthawut Chantharamalee
Digital image Processing By Asst. Prof. Juthawut Chantharamalee
狗隻的訓練 聖士提反女子中學附屬小學 孫晞庭.
บทที่ 3 การให้บริการซอฟต์แวร์ Software as a service(SaaS) 3.1 ความหมาย
ใบสำเนางานนำเสนอ:

อินเตอร์เฟส (Interface) Chapter 5 Edit 10-2016 Asst. Prof. Juthawut Chantharamalee Computer Science @ Suan Dusit University ALLPPT.com _ Free PowerPoint Templates, Diagrams and Charts

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

การประกาศอินเตอร์เฟซ คลาสที่เราต้องการประกาศให้เป็นอินเตอร์เฟซ จะใช้คำว่า interface แทนคำว่า class ชื่อไฟล์ไม่จำเป็นต้องเหมือนกับชื่ออินเตอร์เฟซ และถือว่าอินเตอร์เฟซเป็น public ตัวอย่าง แสดงให้เห็นลักษณะซอร์สโค้ดของอินเตอร์เฟซ Merchandisc //MyInterface.java interface Merchandisc { boolean isSaleable = true ; // (1) // float price ; // (2) void discount() ; // (3) } ในบรรทัด (1) เรานิยามตัวแปร isSaleable ไว้บอกความเป็นสินค้าซึ่งกำหนดค่าไว้เป็น true ค่าของตัวแปรอินเตอร์เฟซต้องกำหนดไว้ในอินเตอร์เฟซเสมอ และจะเปลี่ยนแปลงภายหลังไม่ได้ พูดง่ายๆคือเป็นตัวแปรถาวรเสมอโดยไม่ต้องมีการระบุ ดังนันตัวแปร price ในบรรทัด (2) จึงไม่อาจประกาศได้เพราะไม่มีค่า ในบรรทัด (3) เมธอด discount() มีแต่ชื่อไม่มีตัว เพราะเมธอดในอินเตอร์เฟซ เป็นเมธอดนามธรรมเสมอโดยไม่ต้องมีการระบุ ดังนั้นก็ไม่ต้องสงสัยเลยว่าอินเตอร์เฟซย่อมเป็นคลาสนามธรรมไปด้วย เราไม่สามารถสร้างอินสแตนท์ของอินเตอร์เฟซได้}

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

การสืบทอดอินเตอร์เฟซ การสืบทอดอินเตอร์เฟซของคลาสใดๆจะใช้คำสั่ง implements ดังตัวอย่างเช่น class A extends class B implements Mechandisc { } และในกรณีที่มีการสืบทอดมากกว่าหนึ่งอินเตอร์เฟซจะใช้เคื่องหมาย , คั่น เช่น class A extends class B implements Mechandisc, otherinterface {

คลาสสามารถสืบทอดอินเตอร์เฟซได้ แต่อินเตอร์เฟซไม่สามารถสืบทอดคลาสได้ ดังตัวอย่างต่อไปนี้ import car.Vehicle; interface Merchandise { boolean isSaleable=true; void discount(); } class PrivateCar extends Vehicle implements Merchandise { // (1) int numberOfPassengers; void playCD() { System.out.println("CD is playing"); } public void discount() { // (2) if(isSaleable) { System.out.println("Price reduced"); } } } public class TestInterface { public static void main(String[] args) { PrivateCar v=new PrivateCar(); v.numberOfPassengers=10; v.playCD(); v.discount(); } }

ผลการรัน ในบรรทัด (1) คลาส PrivateCar สืบทอดทั้งคลาส Vehicle และอินเตอร์เฟซ Merchandisc เมธอด discount() ในบรรทัด (2) เป็นการนำเอาเมธอดนามธรรมที่ประกาศไว้ในอินเตอร์เฟซมานิยาม ซึ่งจะละไม่ได้เพราะคลาสที่สืบทอดอินเตอร์เฟซต้องนิยามเมธอดทุกเมธอดที่อินเตอร์เฟซประกาศไว้ มิฉะนั้นตัวคลาสเองจะต้องประกาศเป็นคลาสนามธรรมซึ่งจะทำให้นำไปสร้างอินสแตนท์ไม่ได้ ทั้งตัวแปรและเมธอดในอินเตอร์เฟซจะเป็น public โดยอัตโนมัติไม่ต้องมีการระบุ สังเกตว่าเมธอด discount() ที่อยู่ในคลาส PrivateCar ต้องเป็น public ด้วย เพราะการโอเวอร์รายด์เมธอด เมธอดตัวใหม่ต้องมีอิสระในการเข้าถึงเท่ากับหรือน้อยกว่าเมธอดต้นแบบ

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

อินเตอร์เฟซสามารถสืบทอดอินเตอร์เฟซได้ด้วย แต่ในกรณีนี้เราจะใช้คำสั่ง extends แทน ดังตัวอย่าง interface A { } interface B { } interface C extends A,B { } ในขณะที่คลาสสืบทอดอินเตอร์เฟซได้ แต่อินเตอร์เฟซกลับไม่สามารถสืบทอดคลาสได้ ดังตัวอย่างต่อไปนี้ผิด class A { } interface B extends A { } // Error

The End Chapter 5

Work-5 (งานชิ้นที่ 5) ให้นักศึกษาทำแบบฝึกหัดบทที่ 5 (ลงในสมุดเท่านั้น) ตอนที่ 1 (ให้ลอกโจทย์ด้วย) ตอนที่ 2 การจับคู่ (ให้ลอกโจทย์ด้วย) หมายเหตุ ให้ขีดเส้นใต้คำตอบด้วยปากกาสีแดงเท่านั้น เมื่อทำจบในแต่ละข้อย่อยให้ขีดเส้นใต้คำตอบด้วยปากกาสีแดงด้วย