Abstract Class and Interface

Slides:



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

05_3_Constructor.
การเขียนโปรแกรมภาษาจาวาตอนที่ ๓
หลักการเชิงวัตถุ อาจารย์ศิริพร ศักดิ์บุญญารัตน์
Selected Topics in IT (Java)
การสืบทอด (Inheritance)
Inheritance การสืบทอดคลาส
JAVA PROGRAMMING PART IV.
Method of Class อ.สุพจน์ สิงหัษฐิต
Java Programming Java Structure and Datatype,Variable
chapter5 - คลาสนามธรรม - อินเตอร์เฟสคลาส
Chapter 6 Abstract Class and Interface
หน่วยที่ 3 ความคลาดเคลื่อน ความถูกต้อง ความเที่ยงตรง และความไว.
Java Network Programming – Network Operating Systems and Protocols Choopan Rattanapoka.
เรื่อง เทคโนโลยีบอรดแบนด์ไร้สาย
เทคนิคการเขียนข่าว การเขียนข่าวเพื่อการประชาสัมพันธ์เบื้องต้น มีโครงสร้างการเขียนข่าว ประกอบด้วย 1.พาดหัวข่าว (Headline) 2.ความนำ (Lead) 3.ส่วนเชื่อม (Neck/Bridge)
ซอฟต์แวร์ระบบที่รู้จักกันดี คือซอฟต์แวร์ควบคุมการปฏิบัติการ ของคอมพิวเตอร์ที่เรียกว่า ระบบปฏิบัติการ ระบบปฏิบัติการเป็นชุดคำสั่งที่ใช้ควบคุมระบบฮาร์ดแวร์และ.
LAB ตัวแปร : Variables ในการเขียนโปรแกรมเราต้องการให้โปรแกรม จดจำค่าต่างๆ ไว้ เช่นเมื่อรับค่าข้อมูลจาก ผู้ใช้ หรือค่าที่ได้จากการคำนวณใดๆ ค่า.
. แผ น กลุ่ม 1 กลุ่ม 2 กลุ่ม 3 กลุ่ม 4 กลุ่ม 5 รวม 1. สหกรณ์/กลุ่ม เกษตรกรได้รับ การส่งเสริม สนับสนุนการ ดำเนินงาน สหกรณ์ กลุ่มเกษตรกร
กาญจนา ทองบุญนาค สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
บทที่2 การวางแผนการผลิตและกำลังการผลิต
การเลือกข้อมูลจาก List การกำหนดเงื่อนไขการป้อนข้อมูลด้วย Data Validation การใส่ Comment / แสดง / แก้ไข / ลบ.
MTH 261 File Management. File Management File Management จะอธิบายเกี่ยวกับการเขียน ส่วนจัดการแฟ้มข้อมูล เราสามารถที่จะเขียน โปรแกรมเพื่อเรียกใช้แฟ้มข้อมูลที่เรามี
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
IP-Addressing and Subneting
IP-Addressing and Subneting
อนุกรมอนันต์และการลู่เข้า
อินเตอร์เฟส (Interface)
การประยุกต์ Logic Gates ภาค 2
บทที่ 7 การวิเคราะห์และพัฒนาระบบ
เขียนโปรแกรม Java เบื้องต้น
การบริหารโครงการ Project Management
STACK สแตก(stack) เป็นโครงสร้างข้อมูลแบบเชิงเส้น ที่มีการใส่ข้อมูลเข้า และนำข้อมูลออกเพียงด้านเดียว ดังนั้น ข้อมูลที่เข้าไปอยู่ใน stack ก่อนจะออกจาก stack.
BC320 Introduction to Computer Programming
Object-Oriented Programming Paradigm
คุณลักษณะของสัญญาณไฟฟ้าแบบต่าง ๆ
โครงสร้างภาษา C Arduino
ประเภทแผ่นโปร่งใส (แผ่นใส) รายวิชา ออปแอมป์และลิเนียร์ไอซี
Presentation การจัดการข้อร้องเรียนในธุรกิจบริการ Customer Complaint Management for Service.
ตัวแปรและการคำนวณ Variables and Calculation
Creating And Using Exceptions
The Collections Framework
การรายงานความคืบหน้าหรือสถานะ
การเขียนโปรแกรมแบบวนซ้ำ: คำสั่ง while คำสั่ง do….while
บทที่ 7 การวิเคราะห์และพัฒนาระบบ
Object-Oriented Programming Paradigm
กำหนดกรอบระยะเวลาการขึ้นทะเบียนปี2556/57 1. ข้าว
คุณสมบัติเชิงวัตถุ Chapter 6 Edit
Java Translation Object and Class ในมุมมองคอมพิวเตอร์ Objects หรือ Instances หมายถึงวัตถุที่กำเนิดตัวตนจริงๆจากต้นแบบที่กำหนดโดยคลาส Object.
Data storage II Introduction to Computer Science ( )
Method and Encapsulation
Inheritance and Encapsulation
การเขียนภาษาจาวาเบื้องต้น
State Table ตารางสถานะ ปรับปรุง 18 เมษายน 2562
Week 5 C Programming.
SMS News Distribute Service
บทที่7 ทฤษฎีกราฟเบื้องต้น
Inheritance Chapter 07.
Data storage II Introduction to Computer Science ( )
หน่วยที่ 6 อะเรย์ของอักขระ
Chapter 10 Exception Handling
2 โครงสร้างข้อมูลแบบสแตก (STACK).
Computer Game Programming
ชัยพฤกษ์รัตนาธิเบศร์ - วงแหวน
การจัดบล๊อคและบัฟเฟอร์ (Blocking and Buffering)
Class Inheritance and Interfaces.
การเขียนโปรแกรมคอมพิวเตอร์ แบบภาษาเชิงวัตถุ
ฟังก์ชันของโปรแกรม Computer Game Programming
Class Diagram.
Sequence Diagram.
ใบสำเนางานนำเสนอ:

Abstract Class and Interface Chapter08

Abstract Class and Interface ความหมายของ Abstraction วัตถุประสงค์การสร้าง Abstract Class และ Interface การใช้งาน Abstract Class และ Interface การทำ multiple inheritance ข้อแตกต่างระหว่าง Abstract Class และ Interface

Abstract Class หมายถึงคลาสที่ประกาศนำหน้าด้วย abstract สามารถมีทั้ง abstract และ non-abstract methods (method ที่มีแต่โครงของ method body).

Abstraction in Java Abstraction เป็นซ่อนการรายละเอียดของคำสั่งใน method จะอนุญาตให้ผู้ใช้ทราบเพียงว่า method ทำอะไรได้เท่านั้น เช่นการส่ง sms เราเพียงแต่พิมพ์ข้อความและส่งเท่านั้น โดยไม่รู้ขบวนการภายในในการส่ง message เลย Abstraction จะมุ่งเน้นเฉพาะว่า วัตถุทำอะไรได้บ้าง โดยไม่รู้ว่าทำอย่างไร

การสร้าง Abstraction ในจาวา สามารถสร้างได้ 2 อย่างคือ Abstract class (ทำได้ตั้ง 0 to 100%) Interface (ทำได้สมบูรณ์แบบ 100%) ทั้ง 2 วิธีเราจะเรียนในบทนี้

Abstract class in Java ก็คือ class ใดๆที่ประกาศว่าเป็น abstract ในการนำไปใช้จำเป็นต้องทำการขยาย(extend)และเขียนคำสั่งเพิ่มใน method ให้ทำงานตามต้องการ ตัวอย่างการประกาศ abstract class A{}  

abstract method เป็น method ประกาศให้เป็น abstract ซึ่งจะต้องไม่มีการเขียนคำสั่งใดๆเลยใน method นั้น เช่น abstract void printStatus();

Example of abstract class that has abstract method abstract class Bike{     abstract void run();   }      class Honda4 extends Bike{   void run(){System.out.println("running safely..");}   public static void main(String args[]){    Bike obj = new Honda4();    obj.run();   Ountput :running safely..

ตัวอย่างการใช้งานงานจริง Abstract Class abstract class Shape{ abstract void draw(); } class Rectangle extends Shape{ void draw(){System.out.println("drawing rectangle");}

-ต่อ- class Circle1 extends Shape{ void draw(){System.out.println("drawing circle");}   }     class TestAbstraction1{   public static void main(String args[]){   Shape s=new Circle1(); s.draw();   Output : drawing circle

Another example of abstract class in java abstract class Bank{ abstract int getRateOfInterest(); } class SBI extends Bank{ int getRateOfInterest(){return 7;} } class PNB extends Bank{ int getRateOfInterest(){return 9;} class TestBank{ public static void main(String args[]){ Bank b=new SBI(); int interest=b.getRateOfInterest(); System.out.println("Rate of Interest is: "+interest+" %"); }} Output: Rate of Interest is: 7 %

Abstract class having constructor, data member, methods etc. //example of abstract class that have method body    abstract class Bike{      Bike(){System.out.println("bike is created");}      abstract void run();      void changeGear(){System.out.println("gear changed");}    }    class Honda extends Bike{    void run(){System.out.println("running safely..");}    class TestAbstraction2{    public static void main(String args[]){     Bike obj = new Honda();     obj.run();     obj.changeGear();   }   Output : bike is created running safely.. gear changed

กฎเกี่ยวกับ Abstract กฎ: ถ้ามี method ใดๆในคลาสที่ระบุเป็น abstract method เกิดขึ้น คลาสนั้นต้องระบุเป็น abstract ด้วย เช่น class Bike12{   abstract void run();   }   Output: compile time error กฎ : ถ้าเรา extend คลาสใดๆที่เป็น abstract class ที่มีabstract method เราต้องทำการ implement เมธอดนั้น มิฉะนั้นเราต้องให้คลาสที่ extend นี้เป็น class abstract ด้วย

Interface interface ในภาษา java จะถือว่าเป็นแม่แบบ(blueprint)การทำงาน ของ class จะมีสมาชิกที่เป็นเพียง static constants abstract methods เป็นกลไกในการสร้าง abstraction โดยแท้จริง. abstract methods จะประกาศแต่เพียงส่วนหัวเท่านั้นไม่ต้องระบุส่วนของ body สามารถสนับให้เกิด multiple inheritance สนับสนุนความสัมพันธ์แบบ IS-A relationship. ไม่สามารถสร้างวัตถุได้เหมือน abstract class.

เหตุผลที่ต้องใช้ interface เพื่อให้ได้ fully abstraction. ต้องการใช้พฤติกรรมต่างๆที่ผสมกันมาจากหลายที่ด้วยการทำ multiple inheritance. ทำให้เกิดการขึ้นต่อกันของคำสั่งน้อยที่สุด (loose coupling) เพื่อการแก้ไข เพิ่มเติมที่ไม่ส่งผลกระทบต่อกัน Note : java compiler จะเติมคีย์เวิร์ด public ม abstract หน้า interface method และเติมคีย์เวิร์ด public, static และ final หน้า data members ให้โดยอัตโนมัติ : หรือ Interface fields จะเป็น public, static และ final โดยอัตโนมัติ ส่วน methods จะเป็น public และ abstract โดยอัตโนมัติ

ความสัมพันธ์ระหว่าง classes และ interfaces class extends another class an interface extends another interface a class implements an interface.

Simple example of Java interface interface printable{   void print();   }      class A6 implements printable{   public void print(){System.out.println("Hello");}   public static void main(String args[]){   A6 obj = new A6();   obj.print();    }   Output:Hello

Multiple inheritance in Java by interface สามารถทำได้ 2 รูปแบบคือ class ต่อเติม(implements)method จากหลาย interfaces interface ขยาย(extends) method จากหลาย interfaces

interface Printable{   void print();   }      interface Showable{   void show();   class A7 implements Printable , Showable{   public void print(){System.out.println("Hello");}   public void show(){System.out.println("Welcome");}   public static void main(String args[]){   A7 obj = new A7();   obj.print();   obj.show();    }   Output:Hello Welcome

เหตุผลว่าทำไม class จึงทำ multiple inheritance ไม่ได้ เพราะ method ที่ถูก inherit จาก interface มาจะถูก implement ในตัวclass interface Printable{   void print();   }    interface Showable{   }   class testinterface1 implements Printable,Showable{   public void print(){System.out.println("Hello");}   public static void main(String args[]){   testinterface1 obj = new testinterface1();   obj.print();    }   Output: Hello

Interface inheritance interface Printable{   void print();   }   interface Showable extends Printable{   void show();   class Testinterface2 implements Showable{      public void print(){System.out.println("Hello");}   public void show(){System.out.println("Welcome");}   public static void main(String args[]){   Testinterface2 obj = new Testinterface2();   obj.print();   obj.show();    }   Output : Hello Welcome

marker or tagged interface interface ที่ไม่มีสมาชิกเลยเรียกว่า “marker” หรือ “tagged” interface. เช่น: Serializable, Cloneable, Remote ฯลฯ. ใช้เพื่อบอกให้ JVM ทำงานเพิ่มเติมที่สำคัญบางอย่าง เช่น การเขียน Serializable interface    public interface Serializable{   }  

การใช้ abstract class ขยาย Interface เราอาจใช้ abstract class ทำการ implement เพิ่มเติมให้กับ interfaceinterface A{   void a();   void b();   void c();   void d();   }      abstract class B implements A{   public void c(){System.out.println("I am C");}  

class M extends B{   public void a(){System.out.println("I am a");}   public void b(){System.out.println("I am b");}   public void d(){System.out.println("I am d");}   }   class Test5{   public static void main(String args[]){   A a=new M();   a.a();   a.b();   a.c();   a.d();   }}   Output:I am a I am b I am c I am d

การใช้ instanceof กับ interface interface Printable{}   class A implements Printable{   public void a(){System.out.println("a method");}   }   class B implements Printable{   public void b(){System.out.println("b method");}   }     class Call{   void invoke(Printable p){//upcasting   if(p  instanceof A){   A a=(A)p;//Downcasting    a.a();   if(p  instanceof B){   B b=(B)p;//Downcasting    b.b();   }  }  } //end of Call class     

-ต่อ- class Test4{ public static void main(String args[]){ Printable p=new B();   Call c=new Call();   c.invoke(p);   }   Output: b method

Difference between abstract class and interface

Example of abstract class and interface in Java // มี  4 methods   interface A{   void a(); //bydefault, public and abstract   void b();   void c();   void d();   }      abstract class B implements A{   public void c(){System.out.println("I am C");}  

class M extends B{ public void a(){System. out class M extends B{ public void a(){System.out.println("I am a");} public void b(){System.out.println("I am b");} public void d(){System.out.println("I am d");} } //Creating a test class that calls the methods of A interface class Test5{ public static void main(String args[]){ A a=new M(); a.a(); a.b(); a.c(); a.d(); }} Output: I am a I am b I am c I am d