2017-04-25 91 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'

相关问题