برنامه نویسی

تسلط بر مبانی سی شارپ: وراثت

Summarize this content to 400 words in Persian Lang توضیحات متا:ارث یک مفهوم اساسی در برنامه نویسی شی گرا (OOP) است که به ما اجازه می دهد یک کلاس جدید ایجاد کنیم که بر اساس یک کلاس موجود ساخته می شود. با به اشتراک گذاشتن عملکردها و ویژگی های مشترک در کلاس های مختلف، کاهش افزونگی و بهبود قابلیت نگهداری، به سازماندهی موثر کد کمک می کند.

در این مقاله، ارث را با یک مثال عملی با تمرکز بر بررسی می کنیم وسایل نقلیه، برای نشان دادن اینکه چگونه و چرا وراثت در ساخت برنامه های کاربردی در دنیای واقعی مفید است. ما همچنین به طور عمیق به استفاده از محافظت شده است اصلاح کننده دسترسی، یک جنبه کلیدی از وراثت.

سناریوی واقعی: وسایل نقلیه

تصور کنید در حال طراحی نرم افزاری برای سیستم مدیریت خودرو هستید. این شرکت انواع مختلفی از وسایل نقلیه مانند ماشین ها، دوچرخه، و کامیون ها. در حالی که هر نوع وسیله نقلیه ویژگی های منحصر به فرد خود را دارد، همه آنها دارای برخی ویژگی ها و رفتارهای مشترک هستند:

همه وسایل نقلیه دارای یک نام، یک سرعت، و راهی برای شروع کنید و توقف.

ماشین ها ممکن است دارای تهویه مطبوع و ظرفیت های مختلف صندلی باشد.

دوچرخه زنگ دارند اما از سوخت استفاده نمی کنند.

کامیون ها می تواند بارهای سنگین را حمل کند و ظرفیت بارگذاری متفاوتی داشته باشد.

به جای تکرار ویژگی ها و رفتارهای مشترک در هر کلاس، می توانیم از وراثت استفاده کنیم. به این ترتیب، ما می توانیم عملکرد مشترک را در a تعریف کنیم کلاس پایه و از آن به ارث بری برای اضافه کردن ویژگی های خاص در کلاس های مشتق شده.

مرحله 1: ایجاد کلاس پایه

ما با ایجاد یک شروع می کنیم کلاس پایه نام برد Vehicle. این کلاس حاوی تمام ویژگی ها و روش های مشترک برای هر نوع وسیله نقلیه است.

public class Vehicle
{
public string Name { get; set; }
public int Speed { get; set; }

protected int FuelLevel { get; set; } // Protected: Only accessible by Vehicle and its derived classes

public void Start()
{
Console.WriteLine($”{Name} is starting.”);
}

public void Stop()
{
Console.WriteLine($”{Name} is stopping.”);
}

public void Accelerate(int amount)
{
Speed += amount;
Console.WriteLine($”{Name} is accelerating to {Speed} km/h.”);
}

public void Refuel(int amount)
{
FuelLevel += amount;
Console.WriteLine($”{Name} has been refueled by {amount} liters. Current fuel level: {FuelLevel} liters.”);
}
}

در اینجا تعریف کردیم:

Name و Speed به عنوان public خواص

FuelLevel به عنوان یک protected ویژگی، به این معنی که می توان به آن دسترسی پیدا کرد Vehicle کلاس و هر کلاس مشتق شده اما نه از کلاس های خارجی.
روش هایی مانند Start()، Stop()، Accelerate()، و Refuel() نشان دهنده اقدامات مشترکی است که یک وسیله نقلیه می تواند انجام دهد.

مرحله 2: ایجاد کلاس های مشتق شده

اکنون، ما انواع خاصی از وسایل نقلیه را ایجاد می کنیم که شما ارث می برید از Vehicle کلاس پایه این کلاس های مشتق شده ویژگی های خاصی را اضافه می کنند که برای هر نوع خودرو منحصر به فرد است.

کلاس ماشین ( ارث می برد از Vehicle)

public class Car : Vehicle
{
public bool HasAirConditioning { get; set; }

public void TurnOnAirConditioning()
{
if (HasAirConditioning)
{
Console.WriteLine($”{Name}’s air conditioning is now on.”);
}
else
{
Console.WriteLine($”{Name} doesn’t have air conditioning.”);
}
}

public void Drive(int distance)
{
if (FuelLevel >= distance / 10)
{
FuelLevel -= distance / 10; // Use protected FuelLevel
Console.WriteLine($”{Name} drove {distance} km. Remaining fuel: {FuelLevel} liters.”);
}
else
{
Console.WriteLine($”Not enough fuel for {Name} to drive {distance} km.”);
}
}
}

کلاس دوچرخه ( ارث می برد از Vehicle)

public class Bicycle : Vehicle
{
public bool HasBell { get; set; }

public void RingBell()
{
if (HasBell)
{
Console.WriteLine($”{Name} is ringing the bell!”);
}
else
{
Console.WriteLine($”{Name} doesn’t have a bell.”);
}
}

public void Pedal(int distance)
{
Speed += 5;
Console.WriteLine($”{Name} is pedaling {distance} km at speed {Speed} km/h.”);
}
}

کلاس کامیون ( ارث می برد از Vehicle)

public class Truck : Vehicle
{
public int LoadCapacity { get; set; } // Load capacity in kg

public void LoadCargo(int weight)
{
if (weight <= LoadCapacity)
{
Console.WriteLine($”{Name} is now loaded with {weight} kg.”);
}
else
{
Console.WriteLine($”{Name} cannot carry more than {LoadCapacity} kg.”);
}
}

public void DriveWithCargo(int distance)
{
if (FuelLevel >= distance / 5)
{
FuelLevel -= distance / 5; // Use protected FuelLevel
Console.WriteLine($”{Name} drove {distance} km with cargo. Remaining fuel: {FuelLevel} liters.”);
}
else
{
Console.WriteLine($”Not enough fuel for {Name} to drive {distance} km with cargo.”);
}
}
}

مرحله 3: استفاده از کلاس ها

اکنون که کلاس های خود را تعریف کرده ایم، بیایید ببینیم که وراثت در عمل چگونه کار می کند.

public static void Main(string[] args)
{
// Create a Car instance
Car car = new Car() { Name = “Sedan”, Speed = 0, HasAirConditioning = true };
car.Refuel(50); // Refuel using a public method from Vehicle
car.Start(); // Use Start method from Vehicle
car.Drive(200); // Use Drive method from Car, which utilizes protected FuelLevel
car.TurnOnAirConditioning(); // Use Car-specific method
car.Stop(); // Use Stop method from Vehicle

Console.WriteLine();

// Create a Bicycle instance
Bicycle bicycle = new Bicycle() { Name = “Mountain Bike”, Speed = 0, HasBell = true };
bicycle.Start(); // Use Start method from Vehicle
bicycle.Pedal(15); // Use Pedal method from Bicycle
bicycle.RingBell(); // Use Bicycle-specific method
bicycle.Stop(); // Use Stop method from Vehicle

Console.WriteLine();

// Create a Truck instance
Truck truck = new Truck() { Name = “Heavy Loader”, Speed = 0, LoadCapacity = 10000 };
truck.Refuel(100); // Refuel using a public method from Vehicle
truck.Start(); // Use Start method from Vehicle
truck.LoadCargo(8000); // Use Truck-specific method
truck.DriveWithCargo(150); // Use Truck-specific method to drive with cargo
truck.Stop(); // Use Stop method from Vehicle
}

درک کردن protected Access Modifier در وراثت

این protected اصلاح کننده دسترسی در وراثت بسیار مهم است. بین آن می نشیند public و private از نظر دسترسی در اینجا یک تفکیک دقیق است:

public: عضو از هر کجا قابل دسترسی است.

private: عضو فقط در خود کلاس قابل دسترسی است.

protected: عضو در کلاسی که در آن تعریف شده و هر یک از کلاس های مشتق شده آن قابل دسترسی است.

فکر کن protected به عنوان راهی برای به اشتراک گذاشتن جزئیات خاص بین یک کلاس و “فرزندان” آن، اما برای پنهان نگه داشتن این جزئیات از بقیه جهان.

زمان استفاده protected

protected زمانی مفید است که یک کلاس پایه دارید که اعضای آن باید با کلاس های مشتق شده به اشتراک گذاشته شوند، اما می خواهید از دسترسی مستقیم کلاس های خارج جلوگیری کنید. به عنوان مثال، منطق داخلی، داده ها یا رفتارهایی که برای کلاس های مشتق شده رایج هستند اما نباید به صورت عمومی در معرض دید قرار گیرند.

مثال: کارمندان

یک را در نظر بگیرید کارمند کلاس پایه و کلاس های مشتق شده خاص مانند مدیر و کارآموز. همه کارکنان دارای یک حقوق و دستمزد که به صورت داخلی مدیریت می شود، اما هر نوع کارمند ممکن است محاسبات متفاوتی برای پاداش یا افزایش حقوق داشته باشد.

کلاس پایه (Employee):

public class Employee
{
public string Name { get; set; }
protected decimal BaseSalary { get; set; } // Protected salary

public Employee(string name, decimal baseSalary)
{
Name = name;
BaseSalary = baseSalary;
}

public void ShowSalary()
{
Console.WriteLine($”{Name}’s base salary is {BaseSalary}.”);
}
}

کلاس مشتق شده (Manager):

public class Manager : Employee
{
public Manager(string name, decimal baseSalary) : base(name, baseSalary) { }

public void ApplyBonus()
{
// Using the protected member BaseSalary
BaseSalary += 2000;
Console.WriteLine($”{Name} received a bonus. New salary: {BaseSalary}.”);
}
}

استفاده:

public static void Main(string[] args)
{
Manager manager = new Manager(“Alice”, 50000);

manager.ShowSalary(); // Public method, can be accessed from anywhere
manager.ApplyBonus(); // Apply bonus
manager.ShowSalary(); // Show updated salary
}

مزایای protected

دسترسی کنترل شده برای کلاس های مشتق شده: protected به کلاس های مشتق شده اجازه می دهد تا به ویژگی ها و متدهای حیاتی بدون افشای عمومی دسترسی داشته باشند. این زمانی مفید است که می‌خواهید کلاس‌های مشتق شده رفتارهای خاصی را گسترش دهند یا تغییر دهند.
کپسولاسیون: اعضا را از دخالت خارجی در امان نگه می دارد. به عنوان مثال، FuelLevel فقط باید به شیوه ای کنترل شده، یا توسط کلاس های مشتق شده یا با روش های عمومی کلاس پایه، اصلاح شود.
استفاده مجدد از کد و انعطاف پذیری: protected انعطاف پذیری در کلاس های مشتق شده را برای استفاده یا گسترش رفتارهای تعریف شده در کلاس پایه، پشتیبانی از استفاده مجدد و کاهش افزونگی امکان پذیر می کند.

تکالیف

سطح آسان

یک کلاس مشتق شده جدید با نام ایجاد کنید موتور سیکلت که از آن به ارث می برد Vehicle. یک ملک اضافه کنید HasSideCar و یک روش ToggleSideCar().
برای ایجاد یک نمونه کد بنویسید موتور سیکلتخصوصیات آن را تنظیم کرده و متدهای آن را فراخوانی کنید.

سطح متوسط

را اصلاح کنید دوچرخه کلاس برای اضافه کردن یک ویژگی جدید به نام GearCount و روشی به نام ChangeGear(int newGear) برای تنظیم دنده دوچرخه
ایجاد یک نمونه از دوچرخه، تعداد دنده ها را تنظیم کنید و کدی بنویسید تا هنگام رکاب زدن دنده ها را عوض کنید.

سطح دشوار

ایجاد یک اتوبوس کلاسی که از آن ارث می برد Vehicle با یک ملک PassengerCapacity و یک روش PickUpPassengers(int passengers).
یک ویژگی برای ردیابی تعداد مسافران در هواپیما پیاده کنید و منطق را برای جلوگیری از بیش از ظرفیت مسافر در نظر بگیرید.
برای ایجاد یک کد بنویسید اتوبوس به عنوان مثال، سوار کردن مسافران، و شبیه سازی رانندگی در یک مسافت مشخص در حالی که مدیریت سطح سوخت.

نتیجه گیری

با درک و به کارگیری وراثت، می‌توانیم برنامه‌هایی با ساختار، مقیاس‌پذیر و قابل نگهداری ایجاد کنیم. نکته کلیدی این است که تعادل مناسب بین عملکرد به اشتراک گذاری از طریق کلاس پایه و رفتار سفارشی سازی در کلاس های مشتق شده را پیدا کنید، و در عین حال از کپسوله سازی از طریق اصلاح کننده های دسترسی مانند اطمینان حاصل کنید. محافظت شده است.

توضیحات متا:ارث یک مفهوم اساسی در برنامه نویسی شی گرا (OOP) است که به ما اجازه می دهد یک کلاس جدید ایجاد کنیم که بر اساس یک کلاس موجود ساخته می شود. با به اشتراک گذاشتن عملکردها و ویژگی های مشترک در کلاس های مختلف، کاهش افزونگی و بهبود قابلیت نگهداری، به سازماندهی موثر کد کمک می کند.

در این مقاله، ارث را با یک مثال عملی با تمرکز بر بررسی می کنیم وسایل نقلیه، برای نشان دادن اینکه چگونه و چرا وراثت در ساخت برنامه های کاربردی در دنیای واقعی مفید است. ما همچنین به طور عمیق به استفاده از محافظت شده است اصلاح کننده دسترسی، یک جنبه کلیدی از وراثت.

سناریوی واقعی: وسایل نقلیه

تصور کنید در حال طراحی نرم افزاری برای سیستم مدیریت خودرو هستید. این شرکت انواع مختلفی از وسایل نقلیه مانند ماشین ها، دوچرخه، و کامیون ها. در حالی که هر نوع وسیله نقلیه ویژگی های منحصر به فرد خود را دارد، همه آنها دارای برخی ویژگی ها و رفتارهای مشترک هستند:

  • همه وسایل نقلیه دارای یک نام، یک سرعت، و راهی برای شروع کنید و توقف.
  • ماشین ها ممکن است دارای تهویه مطبوع و ظرفیت های مختلف صندلی باشد.
  • دوچرخه زنگ دارند اما از سوخت استفاده نمی کنند.
  • کامیون ها می تواند بارهای سنگین را حمل کند و ظرفیت بارگذاری متفاوتی داشته باشد.

به جای تکرار ویژگی ها و رفتارهای مشترک در هر کلاس، می توانیم از وراثت استفاده کنیم. به این ترتیب، ما می توانیم عملکرد مشترک را در a تعریف کنیم کلاس پایه و از آن به ارث بری برای اضافه کردن ویژگی های خاص در کلاس های مشتق شده.

مرحله 1: ایجاد کلاس پایه

ما با ایجاد یک شروع می کنیم کلاس پایه نام برد Vehicle. این کلاس حاوی تمام ویژگی ها و روش های مشترک برای هر نوع وسیله نقلیه است.

public class Vehicle
{
    public string Name { get; set; }
    public int Speed { get; set; }

    protected int FuelLevel { get; set; }  // Protected: Only accessible by Vehicle and its derived classes

    public void Start()
    {
        Console.WriteLine($"{Name} is starting.");
    }

    public void Stop()
    {
        Console.WriteLine($"{Name} is stopping.");
    }

    public void Accelerate(int amount)
    {
        Speed += amount;
        Console.WriteLine($"{Name} is accelerating to {Speed} km/h.");
    }

    public void Refuel(int amount)
    {
        FuelLevel += amount;
        Console.WriteLine($"{Name} has been refueled by {amount} liters. Current fuel level: {FuelLevel} liters.");
    }
}

در اینجا تعریف کردیم:

  • Name و Speed به عنوان public خواص
  • FuelLevel به عنوان یک protected ویژگی، به این معنی که می توان به آن دسترسی پیدا کرد Vehicle کلاس و هر کلاس مشتق شده اما نه از کلاس های خارجی.
  • روش هایی مانند Start()، Stop()، Accelerate()، و Refuel() نشان دهنده اقدامات مشترکی است که یک وسیله نقلیه می تواند انجام دهد.

مرحله 2: ایجاد کلاس های مشتق شده

اکنون، ما انواع خاصی از وسایل نقلیه را ایجاد می کنیم که شما ارث می برید از Vehicle کلاس پایه این کلاس های مشتق شده ویژگی های خاصی را اضافه می کنند که برای هر نوع خودرو منحصر به فرد است.

کلاس ماشین ( ارث می برد از Vehicle)

public class Car : Vehicle
{
    public bool HasAirConditioning { get; set; }

    public void TurnOnAirConditioning()
    {
        if (HasAirConditioning)
        {
            Console.WriteLine($"{Name}'s air conditioning is now on.");
        }
        else
        {
            Console.WriteLine($"{Name} doesn't have air conditioning.");
        }
    }

    public void Drive(int distance)
    {
        if (FuelLevel >= distance / 10)
        {
            FuelLevel -= distance / 10;  // Use protected FuelLevel
            Console.WriteLine($"{Name} drove {distance} km. Remaining fuel: {FuelLevel} liters.");
        }
        else
        {
            Console.WriteLine($"Not enough fuel for {Name} to drive {distance} km.");
        }
    }
}

کلاس دوچرخه ( ارث می برد از Vehicle)

public class Bicycle : Vehicle
{
    public bool HasBell { get; set; }

    public void RingBell()
    {
        if (HasBell)
        {
            Console.WriteLine($"{Name} is ringing the bell!");
        }
        else
        {
            Console.WriteLine($"{Name} doesn't have a bell.");
        }
    }

    public void Pedal(int distance)
    {
        Speed += 5;
        Console.WriteLine($"{Name} is pedaling {distance} km at speed {Speed} km/h.");
    }
}

کلاس کامیون ( ارث می برد از Vehicle)

public class Truck : Vehicle
{
    public int LoadCapacity { get; set; }  // Load capacity in kg

    public void LoadCargo(int weight)
    {
        if (weight <= LoadCapacity)
        {
            Console.WriteLine($"{Name} is now loaded with {weight} kg.");
        }
        else
        {
            Console.WriteLine($"{Name} cannot carry more than {LoadCapacity} kg.");
        }
    }

    public void DriveWithCargo(int distance)
    {
        if (FuelLevel >= distance / 5)
        {
            FuelLevel -= distance / 5;  // Use protected FuelLevel
            Console.WriteLine($"{Name} drove {distance} km with cargo. Remaining fuel: {FuelLevel} liters.");
        }
        else
        {
            Console.WriteLine($"Not enough fuel for {Name} to drive {distance} km with cargo.");
        }
    }
}

مرحله 3: استفاده از کلاس ها

اکنون که کلاس های خود را تعریف کرده ایم، بیایید ببینیم که وراثت در عمل چگونه کار می کند.

public static void Main(string[] args)
{
    // Create a Car instance
    Car car = new Car() { Name = "Sedan", Speed = 0, HasAirConditioning = true };
    car.Refuel(50);  // Refuel using a public method from Vehicle
    car.Start();     // Use Start method from Vehicle
    car.Drive(200);  // Use Drive method from Car, which utilizes protected FuelLevel
    car.TurnOnAirConditioning(); // Use Car-specific method
    car.Stop();      // Use Stop method from Vehicle

    Console.WriteLine();

    // Create a Bicycle instance
    Bicycle bicycle = new Bicycle() { Name = "Mountain Bike", Speed = 0, HasBell = true };
    bicycle.Start(); // Use Start method from Vehicle
    bicycle.Pedal(15); // Use Pedal method from Bicycle
    bicycle.RingBell(); // Use Bicycle-specific method
    bicycle.Stop();  // Use Stop method from Vehicle

    Console.WriteLine();

    // Create a Truck instance
    Truck truck = new Truck() { Name = "Heavy Loader", Speed = 0, LoadCapacity = 10000 };
    truck.Refuel(100); // Refuel using a public method from Vehicle
    truck.Start();     // Use Start method from Vehicle
    truck.LoadCargo(8000); // Use Truck-specific method
    truck.DriveWithCargo(150); // Use Truck-specific method to drive with cargo
    truck.Stop();      // Use Stop method from Vehicle
}

درک کردن protected Access Modifier در وراثت

این protected اصلاح کننده دسترسی در وراثت بسیار مهم است. بین آن می نشیند public و private از نظر دسترسی در اینجا یک تفکیک دقیق است:

  • public: عضو از هر کجا قابل دسترسی است.
  • private: عضو فقط در خود کلاس قابل دسترسی است.
  • protected: عضو در کلاسی که در آن تعریف شده و هر یک از کلاس های مشتق شده آن قابل دسترسی است.

فکر کن protected به عنوان راهی برای به اشتراک گذاشتن جزئیات خاص بین یک کلاس و “فرزندان” آن، اما برای پنهان نگه داشتن این جزئیات از بقیه جهان.

زمان استفاده protected

protected زمانی مفید است که یک کلاس پایه دارید که اعضای آن باید با کلاس های مشتق شده به اشتراک گذاشته شوند، اما می خواهید از دسترسی مستقیم کلاس های خارج جلوگیری کنید. به عنوان مثال، منطق داخلی، داده ها یا رفتارهایی که برای کلاس های مشتق شده رایج هستند اما نباید به صورت عمومی در معرض دید قرار گیرند.

مثال: کارمندان

یک را در نظر بگیرید کارمند کلاس پایه و کلاس های مشتق شده خاص مانند مدیر و کارآموز. همه کارکنان دارای یک حقوق و دستمزد که به صورت داخلی مدیریت می شود، اما هر نوع کارمند ممکن است محاسبات متفاوتی برای پاداش یا افزایش حقوق داشته باشد.

  1. کلاس پایه (Employee):
public class Employee
{
    public string Name { get; set; }
    protected decimal BaseSalary { get; set; } // Protected salary

    public Employee(string name, decimal baseSalary)
    {
        Name = name;
        BaseSalary = baseSalary;
    }

    public void ShowSalary()
    {
        Console.WriteLine($"{Name}'s base salary is {BaseSalary}.");
    }
}
  1. کلاس مشتق شده (Manager):
public class Manager : Employee
{
    public Manager(string name, decimal baseSalary) : base(name, baseSalary) { }

    public void ApplyBonus()
    {
        // Using the protected member BaseSalary
        BaseSalary += 2000;
        Console.WriteLine($"{Name} received a bonus. New salary: {BaseSalary}.");
    }
}
  1. استفاده:
public static void Main(string[] args)
{
    Manager manager = new Manager("Alice", 50000);

    manager.ShowSalary();  // Public method, can be accessed from anywhere
    manager.ApplyBonus();  // Apply bonus
    manager.ShowSalary();  // Show updated salary
}

مزایای protected

  1. دسترسی کنترل شده برای کلاس های مشتق شده: protected به کلاس های مشتق شده اجازه می دهد تا به ویژگی ها و متدهای حیاتی بدون افشای عمومی دسترسی داشته باشند. این زمانی مفید است که می‌خواهید کلاس‌های مشتق شده رفتارهای خاصی را گسترش دهند یا تغییر دهند.

  2. کپسولاسیون: اعضا را از دخالت خارجی در امان نگه می دارد. به عنوان مثال، FuelLevel فقط باید به شیوه ای کنترل شده، یا توسط کلاس های مشتق شده یا با روش های عمومی کلاس پایه، اصلاح شود.

  3. استفاده مجدد از کد و انعطاف پذیری: protected انعطاف پذیری در کلاس های مشتق شده را برای استفاده یا گسترش رفتارهای تعریف شده در کلاس پایه، پشتیبانی از استفاده مجدد و کاهش افزونگی امکان پذیر می کند.

تکالیف

سطح آسان

  1. یک کلاس مشتق شده جدید با نام ایجاد کنید موتور سیکلت که از آن به ارث می برد Vehicle. یک ملک اضافه کنید HasSideCar و یک روش ToggleSideCar().
  2. برای ایجاد یک نمونه کد بنویسید موتور سیکلتخصوصیات آن را تنظیم کرده و متدهای آن را فراخوانی کنید.

سطح متوسط

  1. را اصلاح کنید دوچرخه کلاس برای اضافه کردن یک ویژگی جدید به نام GearCount و روشی به نام ChangeGear(int newGear) برای تنظیم دنده دوچرخه
  2. ایجاد یک نمونه از دوچرخه، تعداد دنده ها را تنظیم کنید و کدی بنویسید تا هنگام رکاب زدن دنده ها را عوض کنید.

سطح دشوار

  1. ایجاد یک اتوبوس کلاسی که از آن ارث می برد Vehicle با یک ملک PassengerCapacity و یک روش PickUpPassengers(int passengers).
  2. یک ویژگی برای ردیابی تعداد مسافران در هواپیما پیاده کنید و منطق را برای جلوگیری از بیش از ظرفیت مسافر در نظر بگیرید.
  3. برای ایجاد یک کد بنویسید اتوبوس به عنوان مثال، سوار کردن مسافران، و شبیه سازی رانندگی در یک مسافت مشخص در حالی که مدیریت سطح سوخت.

نتیجه گیری

با درک و به کارگیری وراثت، می‌توانیم برنامه‌هایی با ساختار، مقیاس‌پذیر و قابل نگهداری ایجاد کنیم. نکته کلیدی این است که تعادل مناسب بین عملکرد به اشتراک گذاری از طریق کلاس پایه و رفتار سفارشی سازی در کلاس های مشتق شده را پیدا کنید، و در عین حال از کپسوله سازی از طریق اصلاح کننده های دسترسی مانند اطمینان حاصل کنید. محافظت شده است.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

همچنین ببینید
بستن
دکمه بازگشت به بالا