"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني الوصول إلى أساليب الفئة الفرعية من متغير فائقة في جافا؟

كيف يمكنني الوصول إلى أساليب الفئة الفرعية من متغير فائقة في جافا؟

نشر في 2025-03-24
تصفح:717

How Can I Access Subclass Methods from a Superclass Variable in Java?

ومع ذلك ، عند الوصول إلى طرق الفئات الفرعية من متغير فائقة ، تحدث بعض القيود.

ضع في اعتبارك مقتطف الكود التالي: ... } القط الطبقة العامة يمتد PET { لون السلسلة الخاص السلسلة العامة getColor () {...} } كينيل الطبقة العامة { الفراغ الثابت العام الرئيسي (سلسلة [] args) { Pet Cat = New Cat ("Feline" ، 12 ، "Orange") ؛ cat.getColor () ؛ // خطأ المترجم: getColor () غير محدد بالحيوان الأليفة } }

في فئة بيت الكلب ، عندما يتم تعيين كائن CAT لمتغير PET ، يمكن الوصول فقط إلى الأعضاء المحددة في PET. يتضمن ذلك طرقًا مثل getName () و getage () ، ولكن ليس getColor ().

لحل هذا ، هناك خياران:

إعلان المتغير كفكذا فرعي:
abstract public class Pet {
    ...
}

public class Cat extends Pet {
    private String color;
    public String getColor() { ... }
}

public class Kennel {
    public static void main(String[] args) {
        Pet cat = new Cat("Feline", 12, "Orange");
        cat.getColor(); // Compiler error: getColor() not defined in Pet
    }
}

أعلن المتغير باعتباره الفئة الفرعية المحددة:

cat = new cat ("Feline" ، 12 ، "Orange") ؛ cat.getColor () ؛ // صالحة ، يتم تعريف getColor () في CAT

2. يلقي المتغير إلى الفئة الفرعية:

يلقي المتغير إلى فئة فرعية معروفة أو متوقعة:

Cat cat = new Cat("Feline", 12, "Orange");
cat.getColor(); // Valid, getColor() is defined in Cat

مثال على التنفيذ: الفراغ الثابت العام الرئيسي (سلسلة [] args) { Cat Cat = New Cat ("Feline" ، 12 ، "Orange") ؛ System.out.println ("Cat's Color:" cat.getColor ()) ؛ } }

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3