سؤال

أريد أن أحصل على الإعداد التالي:

abstract class Parent {
    public static String ACONSTANT; // I'd use abstract here if it was allowed

    // Other stuff follows
}

class Child extends Parent {
    public static String ACONSTANT = "some value";

    // etc
}

هل هذا ممكن في جافا؟ كيف؟ أفضل عدم استخدام متغيرات/أساليب المثيل إذا كان بإمكاني تجنب ذلك.

شكرًا!

تعديل:

الثابت هو اسم جدول قاعدة البيانات. كل جسم طفل هو orm صغير.

هل كانت مفيدة؟

المحلول

لا يمكنك فعل ذلك بالضبط كما تريد. ربما يكون حل وسط مقبول:

abstract class Parent {
    public abstract String getACONSTANT();
}

class Child extends Parent {
    public static final String ACONSTANT = "some value";
    public String getACONSTANT() { return ACONSTANT; }
}

نصائح أخرى

في هذه الحالة ، عليك أن تتذكر في جافا ، لا يمكنك تجاوز طرق ثابتة. ما حدث هو إخفاء الأشياء.

وفقًا للرمز الذي وضعته إذا قمت بإجابة الأشياء التالية ، ستكون الإجابة فارغة

Parent.ACONSTANT == null ; ==> true

Parent p = new Parent(); p.ACONSTANT == null ; ==> true

Parent c = new Child(); c.ACONSTANT == null ; ==> true

طالما أنك تستخدم الوالدين كنوع مرجعي سيكون Aconstant فارغًا.

دعنا نفعل شيئًا كهذا.

 Child c = new Child();
 c.ACONSTANT = "Hi";
 Parent p = c;
 System.out.println(p.ACONSTANT);

سيكون الإخراج فارغًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top