Это допустимый код для достижения абстракции в Ja va с использованием абстрактных классов и абстрактных методов
Это правильный метод для достижения абстракции? Как это в абстрактном классе
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;
}
}
Так как он дает мне ожидаемые результаты, так что не знаю, правильная реализация или нет!
1 ответ
Абстракция на любом языке программирования - это скорее концепция или подход для моделирования аспектов реального мира как программного обеспечения. Абстракция представляет собой нечто сложное по своей природе и представляет его в программном обеспечении таким образом, который легко понять или использовать, но все же моделирует или сохраняет основные элементы концепции в реальном мире.
Чтобы написать некоторый код и затем спросить "достиг ли я абстракции", будет зависеть то, что вы пытаетесь представить в коде.
В этой статье есть хорошее определение абстракции в разработке программного обеспечения: https://en.wikipedia.org/wiki/Abstraction