2017-04-25 89 views
0

在angular2服務的上下文中;打字稿中的私人靜態功能與公共靜態功能之間有什麼區別?私人靜態功能與打字稿中的公共靜態功能有什麼區別?

public static getUserStockList(): Stock[] { 
    /* TODO: implement http call */ 
    return WATCHLIST; 
    } 

private static getUserStockList(): Stock[] { 
    /* TODO: implement http call */ 
    return WATCHLIST; 
    } 

編輯:

什麼時候是合適的通過專用功能使用私有靜態函數嗎?

+0

嗨,我覺得不同的是Funciton的範圍......所以公衆也可以在課堂外看到(例如,如果你是在服務中做的話)..私人號碼只在類別本身中可見 –

+0

與y其他OO語言,'private'只對類本身的實例可見,'protected'只對類的實例和擴展類可見,並且'public'對所有類都可見 –

+0

@NitzanTomer靜態方法是成員儘管如此,它們不能由類的任何實例調用。那麼公共和私有靜態方法有什麼區別?這是否意味着其他類可以調用這些靜態類方法,而私有靜態只能夠在定義的類中調用? – Yeysides

回答

2

私有靜態方法可以從類的實例中調用。
這樣的一個例子:

interface Data { 
    // ... 
} 

interface StrictData { 
    // ... 

abstract class MyClass { 
    protected constructor(data: StrictData) { 
     // ... 
    } 
} 

class AnotherClass extends MyClass { 
    private static normalizeData(data?: Data | StrictData): StrictData { 
     // ... 
    } 

    constructor(data?: Data | StrictData) { 
     super(AnotherClass.normalizeData(data)); 
    } 
} 

AnotherClass.normalizeData是從實例訪問,編譯器只是這個罰款。
然而,這樣的:

console.log(AnotherClass.normalizeData({})); 

會導致:

住宅 'normalizeData' 是私有的,只有類中訪問 'AnotherClass'

相關問題