2016-07-06 11 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

'https://en.wikipedia.org/wiki/Abstraction#In_computer_scienceので、私は結果がそれほど知らない予想'バディここにあなたをトリップ何!? "権利"の定義? –

+2

あなたが使用しているのは抽象ではなく、継承です。どこでも 'getbasicSalary'メソッドを繰り返すべきではありません。 – zapl

+0

@MadPhysicist、ええ、あなたはその抽象の定義とそれを達成する方法が正しいです – Anupam

答えて

1

任意のプログラミング言語における抽象化は、ソフトウェアとしての現実世界の側面をモデリングするためのコンセプトまたはアプローチです。抽象化は本質的に複雑で、ソフトウェアで理解したり使いやすい方法で表現するものですが、現実の世界では概念の本質的要素をモデル化または保持しています。

コードを記述して「抽象化を達成しましたか?」と尋ねると、コードで表現しようとしていることに依存します。

ソフトウェア開発における抽象化の良い定義は、ここで、この記事であります:実装が正しいかどうそのが与え

関連する問題