Object Class

อารยา ถาวรสิริจรัส 650710594

Object class เป็นคลาสพื้นฐานสำหรับทุกคลาสคลาสใน .NET Framework ซึ่งใน namespace จะมีชื่อว่า System โดยมีชื่อเต็มว่า System.object ซึ่งทุกคลาสในภาษา C# จะถูกสืบทอดทั้งทางตรงหรือทางอ้อมจาก object class ถ้าคลาสไหนไม่มีการ extend จากคลาสอื่นมันก็จะกลายเป็นคลาสลูกของ object class แต่ถ้ามีการ extend กับคลาสอื่นก็จะเป็นการสืบทอดทางอ้อม

C# จะมีข้อมูล 2 ประเภท คือ

  1. Reference types Reference types จะสืบทอดจาก object class ได้ทั้งทางตรงหรือทางอ้อมผ่าน Reference types อื่นๆ

  2. Value types ซึ่ง Value types จะสืบทอด object class ทางอ้อมผ่าน System.ValueType

เมธอดในคลาส Object ของ C#

  1. Equals(Object):

  • ตรวจสอบว่า object ที่ระบุเท่ากับ object ปัจจุบันมั้ย

  1. Equals(Object, Object):

  • ตรวจสอบว่า object ทั้งสองที่ระบุมีค่าเท่ากันมั้ย

  1. Finalize():

  • อนุญาตให้ object พยายามปล่อยทรัพยากรและทำการทำความสะอาดก่อนที่จะถูกจัดการโดย garbage collector

  1. GetHashCode():

  • ทำหน้าที่เป็นฟังก์ชันแฮชเริ่มต้น

  1. GetType():

  • คืนค่า Type ของอ็อบเจ็กต์ปัจจุบัน

  1. ReferenceEquals(Object, Object):

  • ตรวจสอบว่า object ทั้งสองที่ระบุเป็น object เดียวกันมั้ย

  1. ToString():

  • คืนค่าข้อความที่แสดงถึง object ปัจจุบัน

Example

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())

ในภาษา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

Slide Presention

Video Presentation

Reference

ใช้ในการศึกษาโค้ดและการทำงาน python
ใช้ศึกษาโค้ดและการทำงานของ java

ใช้ศึกษาโค้ดและการทำงานของ C++
ใช้ศึกษาความหมาย การทำงานและโค้ดของ C#

Last updated