2017-10-15 1 views
-3

このコードを実行すると、1500の代わりに0が返されるのはなぜですか?Java - なぜ子は親変数の継承をしませんか?

public class Department { 
    private double rate = 0.0; 

    public Department { 
    } 

    public getRate(){ 
     return rate; 
    } 

    public setRate(){ 
     rate = 1 + 2; 
    } 
} 

public class Employe extends Department { 

    private double salary = 0; 

    public Employe { 
    } 

    public calculateSalary(){ 
      salary = getRate() * 500; 
    } 
} 

public static void main(String[] args) throws IOException { 

    Department department = New Department(); 
    department.setRate(); 

    Employe employe = new Employe(); 
    System.out.println(employe.calculateSalary()); 
} 
+0

コードはまったくコンパイルされますか?構文エラーがかなりあります。たとえば、コンストラクター定義に括弧がありません。また、戻り値の型も指定されていません。 –

答えて

0

あなたはDepartmentを作り、その後、あなたはその後、Employeeを作っ3. にそのrateを設定し、あなたがnewあなたを言うとき、それは0

rateを持っているので、そのレートを設定しませんでした新しいオブジェクトを取得します。あなたがコードを変更したいものを取得するには:

Employee employee = New Department(); 
employee.setRate(); 
System.out.println(employe.calculateSalary()); 

することはあなたの全体のコードは、部門の従業員を擁しています、しかし不思議です。従業員は一種の部署ではありません。私たちは、XがYの一種であることを意味します。

0

子供は親変数を継承します。しかし、部門と雇用者は異なるオブジェクトなので、変数を共有しません。このコードを試してください:

Employe employe = new Employe(); 
employe.setRate(); 
System.out.println(employe.calculateSalary()); 
関連する問題