-5
これは抽象化を行う正しい方法ですか?抽象クラスでは、このよう抽象クラスと抽象メソッドを使用してJavaで抽象化を行うための有効なコードですか?
public abstract class Employee {
private String name, address;
int basicSalary;
public String getName(){
return name;
}
public String getAddress(){
return address;
}
public int getbasicSalary(){
return basicSalary;
}
public void setName(String name){
this.name= name;
}
public void setAddress(String address){
this.address= address;
}
public void setBasicSalary(int basicSalary){
this.basicSalary= basicSalary;
}
public abstract int getMonthlySalary();
}
このクラスは、抽象従業員クラスに拡張し
class NormalEmployee extends Employee {
public NormalEmployee() {
// TODO Auto-generated constructor stub
}
public void setBasicSalary(int basicSalary) {
this.basicSalary=basicSalary;
};
// Method override for salarycalculation
@Override
public int getMonthlySalary() {
// TODO Auto-generated method stub
int monthlySalaryOfNormalEmployee= 1200;
System.out.println("Normal Employee Salary: "+monthlySalaryOfNormalEmployee);
return monthlySalaryOfNormalEmployee;
}
}
public class BonusEmployee extends NormalEmployee {
int bonusAmount;
このクラスは、既にある従業員クラスからメソッドを継承し、通常の従業員クラスを拡張
public BonusEmployee() {
// TODO Auto-generated constructor stub
}
public int getBonus(){
return bonusAmount;
}
public static void main(String[] args) {
// Creating objects and calling methods
BonusEmployee bE= new BonusEmployee();
NormalEmployee nE= new NormalEmployee();
bE.setBonus(1200);
bE.setBasicSalary(1500);
bE.getMonthlySalary();
nE.getMonthlySalary();
}
public void setBonus(int bonusAmount){
this.bonusAmount=bonusAmount;
}
@Override
public int getMonthlySalary() {
int getMonthlySalary= basicSalary + getBonus();
System.out.println("Bonus Employee Salary: "+getMonthlySalary);
return basicSalary;
}
}
それは私に期待された結果を与えるので、実装が正しいかどうかわからない!
'https://en.wikipedia.org/wiki/Abstraction#In_computer_scienceので、私は結果がそれほど知らない予想'バディここにあなたをトリップ何!? "権利"の定義? –
あなたが使用しているのは抽象ではなく、継承です。どこでも 'getbasicSalary'メソッドを繰り返すべきではありません。 – zapl
@MadPhysicist、ええ、あなたはその抽象の定義とそれを達成する方法が正しいです – Anupam