यदि आप इसे ओवरराइड करने जा रहे हैं तो मुझे इस स्थैतिक को रखने का कोई वैध कारण नहीं दिखता है। मैं अमूर्त के उपयोग का सुझाव दूंगा (उदाहरण कोड देखें)। :
public interface Person {
public abstract String getName();
//this will be different for each person, so no need to make it concrete
public abstract void setName(String name);
}
अब हम पिताजी को जोड़ सकते हैं:
public class Dad implements Person {
private String name;
public Dad(String name) {
setName(name);
}
@Override
public final String getName() {
return name;
}
@Override
public final void setName(String name) {
this.name = name;
}
}
बेटा:
public class Son implements Person {
private String name;
public Son(String name) {
setName(name);
}
@Override
public final String getName() {
return name;
}
@Override
public final void setName(String name) {
this.name = name;
}
}
और पिताजी एक अच्छी महिला से मिले:
public class StepMom implements Person {
private String name;
public StepMom(String name) {
setName(name);
}
@Override
public final String getName() {
return name;
}
@Override
public final void setName(String name) {
this.name = name;
}
}
ऐसा लगता है जैसे हमारा परिवार है, दुनिया को उनके नाम बताते हैं:
public class ConsoleGUI {
public static void main(String[] args) {
List<Person> family = new ArrayList<Person>();
family.add(new Son("Tommy"));
family.add(new StepMom("Nancy"));
family.add(new Dad("Dad"));
for (Person person : family) {
//using the getName vs printName lets the caller, in this case the
//ConsoleGUI determine versus being forced to output through the console.
System.out.print(person.getName() + " ");
System.err.print(person.getName() + " ");
JOptionPane.showMessageDialog(null, person.getName());
}
}
}
System.out आउटपुट: टॉमी नैन्सी पिताजी
System.err उपर्युक्त जैसा ही है (बस लाल फ़ॉन्ट है)
JOption आउटपुट:
टॉमी तो
नैन्सी तो
पिताजी