public class WorkItem
{
private static int currentID;
protected int ID { get; set; }
protected string Title { get; set; }
protected string Description { get; set; }
protected TimeSpan jobLength { get; set; }
public WorkItem()
{
ID = 0;
Title = "Default title";
Description = "Default description.";
jobLength = new TimeSpan();
}
public WorkItem(string title, string desc, TimeSpan joblen)
{
this.ID = GetNextID();
this.Title = title;
this.Description = desc;
this.jobLength = joblen;
}
static WorkItem() => currentID = 0;
protected int GetNextID() => ++currentID;
public void Update(string title, TimeSpan joblen)
{
this.Title = title;
this.jobLength = joblen;
}
public override string ToString() =>
$"{this.ID} - {this.Title}";
}
public class ChangeRequest : WorkItem
{
protected int originalItemID { get; set; }
public ChangeRequest() {
}
public ChangeRequest(string title, string desc, TimeSpan jobLen,
int originalID)
{
this.ID = GetNextID();
this.Title = title;
this.Description = desc;
this.jobLength = jobLen;
this.originalItemID = originalID;
}
}
จากโค้ด ได้สร้าง class Work Item ซึ่งเป็น class ที่สืบทอดมาจาก System.Object โดยอัตโนมัติซึ่งเราไม่จำเป็นต้องเขียน :System.object ไว้ก็ได้ ซึ่ง class นี้มีเมธอด Greet() ต่อมาสร้าง class dog เป็น class ChangeRequest ที่ สืบทอดมาจาก class WorkItem มีการใช้ tostring() ซึ่งเป็นเมธอดในคลาส Object
เปรียบเทียบ Object class ใน ภาษา C# C++ Java Python
class Person(object):
def __init__(self, name):
self.name = name
def getName(self):
return self.name
def isEmployee(self):
return False
class Employee(Person):
# Here we return true
def isEmployee(self):
return True
emp = Person("Geek1")
print(emp.getName(), emp.isEmployee())
emp = Employee("Geek2")
print(emp.getName(), emp.isEmployee())
class Bicycle {
public int gear;
public int speed;
public Bicycle(int gear, int speed)
{
this.gear = gear;
this.speed = speed;
}
public void applyBrake(int decrement)
{
speed -= decrement;
}
public void speedUp(int increment)
{
speed += increment;
}
public String toString()
{
return ("No of gears are " + gear + "\n"
+ "speed of bicycle is " + speed);
}
}
class MountainBike extends Bicycle {
public int seatHeight;
// the MountainBike subclass has one constructor
public MountainBike(int gear, int speed,
int startHeight)
{
super(gear, speed);
seatHeight = startHeight;
}
// the MountainBike subclass adds one more method
public void setHeight(int newValue)
{
seatHeight = newValue;
}
@Override public String toString()
{
return (super.toString() + "\nseat height is "
+ seatHeight);
}
}
class Vehicle
{
public string brand = "Ford";
public void honk()
{
Console.WriteLine("Tuut, tuut!");
}
}
class Car : Vehicle // derived class (child)
{
public string modelName = "Mustang";
}
class Program
{
static void Main(string[] args)
{
Car myCar = new Car();
myCar.honk();
Console.WriteLine(myCar.brand + " " + myCar.modelName);
}
}
using namespace std;
class Parent {
public:
int id_p;
void printID_p()
{
cout << "Base ID: " << id_p << endl;
}
};
class Child : public Parent {
public:
// derived class members
int id_c;
void printID_c()
{
cout << "Child ID: " << id_c << endl;
}
};
int main()
{
Child obj1;
obj1.id_p = 7;
obj1.printID_p();
obj1.id_c = 91;
obj1.printID_c();
return 0;
}
ในภาษาpython การสืบทอดจาก object class จะมีการใส่ (object) ตามหลังชื่อ class อย่างเช่น class Person(object) ถึงจะสามารถเรียกใช้ฟังก์ชันของ object class ได้ ส่วนในภาษา Java C# และ C++ จะสืบทอดโดยอัตโนมัติ เช่น java => class bicycle สืบทอดมาจาก java.lang.Object และมีการใช้ tostring() เป็นการแสดงถึงการใช้งานฟังก์ชันจาก object class C# => class Vehicle สืบทอดมาจาก System.Object ส่วน C++ class Parent สืบทอดมาจาก object class โดยอัตโนมัติ ทำให้มีสมบัติเป็น object class อยู่แล้ว
Output
Geek1 False
Geek2 True
No of gears are 3
speed of bicycle is 100
seat height is 25