2012-04-03 63 views
0

我在面試中給出了以下代碼。我想知道是否正確或不..這個數據抽象示例是否正確?

public class DataAbstraction 
    { 
     public static void main (String args[]) 
     { 
      MyDetails obj = new MyDetails(); 
      obj.setNumebr(10); 
      obj.incrementBy(20); 
      int num = obj.getMumber(); 
      System.out.println(num); 
     } 
    } 

class MyDetails 
{ 
    private int n; 
    public void setNumebr(int i) 
    { 
     n = i; 
    } 
    public void incrementBy(int i) 
    { 
     n = n + i; 
    } 
    public int getMumber() 
    { 
     return n; 
    } 
} 

所以,請檢查並糾正我,如果我錯了

+1

'Numebr'? 'Mumber'? :) – NPE 2012-04-03 06:26:18

+0

這段代碼的目的是什麼? – 2012-04-03 06:26:22

+0

檢查http://stackoverflow.com/questions/2336692/java-multiple-class-declarations-in-one-file – 2012-04-03 06:40:41

回答

1

有軟件抽象的多種形式。我會說這是一個數據抽象的例子(雖然我通常稱它爲encapsulation)。如果您願意,可以將成員變量n更改爲字符串(!),而不更改MyDetails的公共接口。

換句話說:MyDetails類中的詳細信息是隱藏的來自客戶端代碼。這MyDetails商店的int抽離,它可以改變,比如像這樣的一個事實:

class MyDetails 
{ 
    private String n;    // changed internal detail 
    public void setNumebr(int i) 
    { 
     n = "" + i; 
    } 
    public void incrementBy(int i) 
    { 
     n = "" + getMumber() + i; 
    } 
    public int getMumber() 
    { 
     return Integer.parseInt(n); 
    } 
} 

看一看數據抽象維基百科的文章瞭解更多詳情:

+0

你能否詳細說明你的答案? – 2012-04-03 06:30:29

+0

答覆已更新。 – aioobe 2012-04-03 06:38:44

-1

由於問題中沒有足夠的細節再次猜測時間:

1)不,它錯了。它包含各種拼寫錯誤,如「getMumber」和「setNumebr」。

2)是的,如果我們忽略拼寫錯誤,這些方法似乎可以做到人們對他們名字的期望。

2)不,它不會啓動火箭,它不會擴展到多處理器機器(假設這些地方的要求)。