ไม่ เราไม่สามารถสร้างวัตถุของคลาสนามธรรมได้ แต่เราสามารถสร้างตัวแปรอ้างอิงของคลาสนามธรรมได้ ตัวแปรอ้างอิงใช้เพื่ออ้างถึงวัตถุของคลาสที่ได้รับ (คลาสย่อยของคลาสนามธรรม)
คลาสนามธรรมหมายถึงการซ่อนการใช้งานและการแสดงนิยามฟังก์ชันให้กับผู้ใช้เรียกว่าคลาสนามธรรม คลาสนามธรรมของ Java สามารถมีเมธอดของอินสแตนซ์ที่ใช้พฤติกรรมเริ่มต้นได้ หากเราทราบข้อกำหนดและการใช้งานบางส่วน เราก็สามารถเลือกคลาสนามธรรมได้
ตัวอย่าง
abstract class Diagram { double dim1; double dim2; Diagram(double a, double b) { dim1 = a; dim2 = b; } // area is now an abstract method abstract double area(); } class Rectangle extends Diagram { Rectangle(double a, double b) { super(a, b); } // override area for rectangle double area() { System.out.println("Inside Area for Rectangle."); return dim1 * dim2; } } class Triangle extends Diagram { Triangle(double a, double b) { super(a, b); } // override area for triangle double area() { System.out.println("Inside Area for Triangle."); return dim1 * dim2 / 2; } } public class Test { public static void main(String args[]) { // Diagram d = new Diagram(10, 10); // illegal now Rectangle r = new Rectangle(9, 5); Triangle t = new Triangle(10, 8); Diagram diagRef; // This is OK, no object is created diagRef = r; System.out.println("Area of Rectangle is: " + diagRef.area()); diagRef = t; System.out.println("Area of Triangle is:" + diagRef.area()); } }
ในตัวอย่างข้างต้น เราไม่สามารถสร้างวัตถุประเภทไดอะแกรม แต่เราสามารถสร้างตัวแปรอ้างอิงประเภทไดอะแกรมได้ ที่นี่เราสร้างตัวแปรอ้างอิงประเภท Diagram และตัวแปรอ้างอิงคลาส Diagram ใช้เพื่ออ้างถึงวัตถุของคลาส Rectangle และ Triangle
ผลลัพธ์
Inside Area for Rectangle. Area of Rectangle is: 45.0 Inside Area for Triangle. Area of Triangle is:40.0