การเขียนโปรแกรม D - คลาสนามธรรม

Abstraction หมายถึงความสามารถในการสร้างคลาสนามธรรมใน OOP คลาสนามธรรมคือคลาสที่ไม่สามารถสร้างอินสแตนซ์ได้ ฟังก์ชันอื่น ๆ ทั้งหมดของคลาสยังคงมีอยู่และฟิลด์วิธีการและคอนสตรัคเตอร์ทั้งหมดสามารถเข้าถึงได้ในลักษณะเดียวกัน คุณไม่สามารถสร้างอินสแตนซ์ของคลาสนามธรรมได้

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

การใช้คลาสนามธรรมในง

ใช้ abstractคีย์เวิร์ดเพื่อประกาศคลาสบทคัดย่อ คีย์เวิร์ดจะปรากฏในการประกาศคลาสก่อนคีย์เวิร์ดคลาส ต่อไปนี้แสดงตัวอย่างของการสืบทอดและใช้คลาสนามธรรม

ตัวอย่าง

import std.stdio;
import std.string;
import std.datetime;

abstract class Person {
   int birthYear, birthDay, birthMonth; 
   string name; 
   
   int getAge() {
      SysTime sysTime = Clock.currTime(); 
      return sysTime.year - birthYear;
   }
}

class Employee : Person {
   int empID;
}

void main() {
   Employee emp = new Employee(); 
   emp.empID = 101; 
   emp.birthYear = 1980; 
   emp.birthDay = 10; 
   emp.birthMonth = 10; 
   emp.name = "Emp1"; 
   
   writeln(emp.name); 
   writeln(emp.getAge); 
}

เมื่อเราคอมไพล์และรันโปรแกรมข้างต้นเราจะได้ผลลัพธ์ดังต่อไปนี้

Emp1
37

ฟังก์ชันนามธรรม

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

ตัวอย่าง

import std.stdio; 
import std.string; 
import std.datetime; 
 
abstract class Person { 
   int birthYear, birthDay, birthMonth; 
   string name; 
   
   int getAge() { 
      SysTime sysTime = Clock.currTime(); 
      return sysTime.year - birthYear; 
   } 
   abstract void print(); 
}
class Employee : Person { 
   int empID;  
   
   override void print() { 
      writeln("The employee details are as follows:"); 
      writeln("Emp ID: ", this.empID); 
      writeln("Emp Name: ", this.name); 
      writeln("Age: ",this.getAge); 
   } 
} 

void main() { 
   Employee emp = new Employee(); 
   emp.empID = 101; 
   emp.birthYear = 1980; 
   emp.birthDay = 10; 
   emp.birthMonth = 10; 
   emp.name = "Emp1"; 
   emp.print(); 
}

เมื่อเราคอมไพล์และรันโปรแกรมข้างต้นเราจะได้ผลลัพธ์ดังต่อไปนี้

The employee details are as follows: 
Emp ID: 101 
Emp Name: Emp1 
Age: 37