package inheritencelatest;
public class InheritenceLatest {
public static void main(String[] args) {
person p1=new person(12,"ekaf","atlanta","male");
employe e1=new employe(23,"ekaf","atlanta","male",12000);
e1.ageCategory();
e1.genderIdentity();
e1.display();
((employe)p1).display();
}
}
class person {
int age;
String name;
String Address;
String ageGroup;
protected String gender;
private String canNotBeAccesed; //cant be accessed by subclass
person(int age,String name,String Address,String gender) {
this.age=age;
this.name=name;
this.Address=Address;
this.gender=gender;
}
String ageCategory() {
if(age<10)
return("kid");
else if(age<20 &&age>10)
return("Teen");
else if(age<50&&age>20)
return("adult");
else
return("senior");
}
protected void genderIdentity() {
if("male".equals(gender))
System.out.println("male");
else if(gender=="female")
System.out.println("female");
else
System.out.println("Special");
}
}
class employe extends person {
double salary;
employe(int age,String name,String Address,String gender,int salary) {
super(age,name,Address,gender);
this.salary=salary;
this.name=name;
}
@Override
protected void genderIdentity() {
if(gender=="male")
salary=salary;
if(gender=="female")
salary=1.5*salary;
else
salary=2*salary;
}
void display() {
System.out.println(age +" " +name+" "+Address+" "+salary+" "+gender+ " "+ageGroup);
}
私はこのコードを実行すると、私のように出力を得る:スレッド "メイン" とjava.lang.ClassCastExceptionで
男性
23 ekaf 24000.0男性ヌルatlanat
例外: inheritencelatest.personはinheritencelatest.employe inheritencelatest.InheritenceLatest.main(InheritenceLatest.java:17)にキャストできません
の私の疑問は、給与が24000となりんか
ARE?なぜ私はe1.agecategoryを書くと、agecategoryがnullで、オブジェクトにe1がageGroupの値を取得しなかったのですか?なぜ((employe)p1).display();例外が発生していますか?
人p2 = new employe(23、 "ekaf"、 "atlanat"、 "male"、12000);?
'p1'は'雇用者 'ではなく '人物'です。 – tkausl
投稿するときにコードを書式設定するためにもっと努力してください。それは現時点では全面的に行われています - これは、問題を実証するための最小限の*例が好きではありません。 –
また、読んでくださいhttp://stackoverflow.com/questions/513832 –