在Java中使用抽象类

1 java abstract-class number-formatting

Java Documentation说NumberFormat是一个抽象类.但是以下代码行让我感到困惑.

 NumberFormat nf = NumberFormat.getInstance();
Run Code Online (Sandbox Code Playgroud)

NumberFormat.getInstance()NumberFormat抽象类是什么时我们如何使用它?请有人帮我理解这个吗?

Roh*_*ain 6

NumberFormat.getInstance()是一个静态工厂方法,它可以返回抽象NumberFormat类的具体子类的实例:

它是这样的:

abstract class Instrument {
    public static Instrument getInstance() {
        return new Guitar();
    }
}

class Guitar extends Instrument { }
Run Code Online (Sandbox Code Playgroud)

所以,当你打电话:

Instrument.getInstance();
Run Code Online (Sandbox Code Playgroud)

你会得到一个实例Guitar,它是一个具体的子类.