สนับสนุนโดย

วันจันทร์ที่ 10 ธันวาคม พ.ศ. 2561

การใช้ Abstract Class

การกำหนด abstract ก็คือการบอกว่า class ใดที่ทำการสืบทอดไปจะต้องสร้าง method ตามที่โดนกำหนดไว้ใน abstract keyword เช่นว่า เราอยากให้คลาสลูกมี method a(), b(), c() เราก็วางเป็น abstract ไว้ เพื่อกำหนดมาตรฐานตามที่เราต้องการ



ตัวอย่างโค้ดที่ยังไม่ใช้ abstract
package myPackage;

class Abs1 {
    void g() {
        System.out.println("g");
    }
}

class Abs2 extends Abs1 {
    
}

public class AbstractClass {
    public static void main(String[] args) {
        new Abs2().g();
    }
}

ผลการทำงาน
g

ทีนี้หากเราต้องการกำหนดว่า ให้คลาสใดๆ ก็ตามที่สืบทอดไปจาก Abs1 ต้องสร้าง method g() และให้มันทำงานได้ เราก็วาง abstract ไว้ข้างหน้าดังนี้
package myPackage;

abstract class Abs1 {
    abstract void g();
}

class Abs2 extends Abs1 {
    
}

public class AbstractClass {
    public static void main(String[] args) {
        new Abs2().g();
    }
}

ผลการทำงาน
Exception in thread "main" java.lang.ExceptionInInitializerError
at myPackage.AbstractClass.main(AbstractClass.java:14)
Caused by: java.lang.RuntimeException: Uncompilable source code - myPackage.Abs1 is not abstract and does not override abstract method g() in myPackage.Abs1
at myPackage.Abs1.<clinit>(AbstractClass.java:4)
... 1 more

ที่มัน error เพราะว่าเราไม่ได้ทำการสร้าง g() ในคลาสลูก ให้ทำการเพิ่มเติมโค้ดอีกดังนี้

package myPackage;

abstract class Abs1 {
    abstract void g();
}

class Abs2 extends Abs1 {

    void g() {
        System.out.println("Abs2 g method");
    }
    
}

public class AbstractClass {
    public static void main(String[] args) {
        new Abs2().g();
    }
}


ผลการทำงาน
Abs2 g method

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

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