2016-07-06 54 views
-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; 
    } 

     } 

因为它给了我预期的结果,所以不知道实施是否正确!

+0

'自公司给我预期的结果,因此不知道,如果实施正确与否'什么触发你在这里老兄!? “正确”的定义? –

+2

你使用的是继承,而不是抽象。你也不应该在每个地方重复'getbasicSalary'方法。 – zapl

+0

@MadPhysicist,是的,你是正确的抽象的定义和实现它的方式 – Anupam

回答

1

任何编程语言中的抽象更多的是将现实世界的各个方面建模为软件的概念或方法。抽象正在采取一些本质上复杂的东西,并以易于理解或使用的方式在软件中表现出来,但它仍然模拟或保留了现实世界中概念的基本元素。编写一些代码然后问'我是否已经实现了抽象'取决于你试图在代码中表示什么。

有抽象的软件开发一个很好的定义这篇文章在这里:https://en.wikipedia.org/wiki/Abstraction#In_computer_science