العودة إلى موقع برمج

اريد مساعدة لإضافة خصائص جديدة لكالس فرعي؟

#1

السلام عليكم

هل استطيع اضيف خصائص جديدة لكلاس فرعي عند وراثتها مثل من كلاس اساسي مثل:

class Car {
    var type: String?
    var model: Int?
    var price: Double?
    var miles: Int
    var owner: String
    
    
    init(type: String, model: Int, price: Double, miles: Int, owner: String) {
        self.type = type
        self.model = model
        self.price = price
        self.miles = miles
        self.owner = owner
    }
   
    
    func getPrice() -> Double {
        let newPrice = price! - (Double)(miles * 10)
        return newPrice
    }
    
    func getOwner() -> String {
        return owner
    }
    
}

class Bus: Car {
    
    let size: Int
    
    override init(type: String, model: Int, price: Double, miles: Int, owner: String) {
        // (هنا هل استطيع اضافة خصائص جديدة في الدالة المنشأة) super.init(size)          .
    }
#2

لايمكنك اضافة خصائص جديدة للكلاس الاساسي من الكلاس الفرعي ولكن خصائص الكلاس الفرعي تعتبر امتداد لخصائص الكلاس الرئيسي حيث انك تستطيع استخدام كل الخواص من خلال الكلاس الفرعي
هل هذا يجيب على سؤالك؟

#3

يعني لا استطيع اضافة خصائص جديدة فقط المسموح لي اضافة دوال جديدة
هل هذه طريقة التي تعمل بها الوراثة

#4

يرجى تحديد المزيد من المعلومات عن سؤالك لاتمكن من مساعدتك بافضل شكل ممكن

مثلا في حال قمت بتعريف متغير من نوع الكلاس الرئيسي فلن يملك خصائص اكثر من خصائص الكلاس الرئيسي ولايمكن اضافة خصائص له من اي كلاس فرعي
كل كلاس فرعي يستطيع استخدام خصائص الكلاس الرئيسي اضافة الى خصائصه وبالتالي هذه الطريقة الوحيدة لزيادة خصائص الكلاس الرئيسي بطريقة غير مباشرة

#5

يعني فقط اضافة او تعديل على نفس خصائص الكلاس الاساسي بحيث لا يمكن اضافة خاصية جديدة يتم اضافتها في الدالة المنشأة عند استدعاء الكلاس الفرعي مثال

استدعاء الكلاس الاساسي يكون هكذا

Car(type: String, model: Int, price: Double, miles: Int, owner: String)

المطلوب استدعاء الكلاس الفرعي يكون بإاضافة خاصية (size) جديدة هكذا

Bus(type: String, model: Int, price: Double, miles: Int, owner: String, size: Int)
1 Like
#6

أجل تماما هذه هي الطريقة :100: