读书人

对于抽象类的更上一层楼体会

发布时间: 2012-12-26 14:39:29 作者: rapoo

对于抽象类的进一步体会

今天在看一个工厂方法的代码示例中,发现该示例中定义了一个抽象类但却没有任何抽象方法,代码如下所示。

public abstract class Pizza {String name;String dough;String sauce;ArrayList toppings = new ArrayList(); void prepare() {System.out.println("Preparing " + name);System.out.println("Tossing dough...");System.out.println("Adding sauce...");System.out.println("Adding toppings: ");for (int i = 0; i < toppings.size(); i++) {System.out.println("   " + toppings.get(i));}}  void bake() {System.out.println("Bake for 25 minutes at 350");} void cut() {System.out.println("Cutting the pizza into diagonal slices");}  void box() {System.out.println("Place pizza in official PizzaStore box");} public String getName() {return name;}public String toString() {StringBuffer display = new StringBuffer();display.append("---- " + name + " ----\n");display.append(dough + "\n");display.append(sauce + "\n");for (int i = 0; i < toppings.size(); i++) {display.append((String )toppings.get(i) + "\n");}return display.toString();}}
?

感觉很疑惑。本来认为所谓抽象类只要需要有一个抽象方法,否则编译无法通过,没想到这个程序进行编译通过并成功运行了。十分不解,特地翻了下TIJ,发现上面有这样一段话:“我们也可能会创建一个没有任何抽象方法的抽象类。考虑这种情况:如果有一个类,让其包含任何abstract方法都显得没有实际意义,而且我们也想要阻止产生这个类的任何对象...”

?

总结如下:可以创建一个没有任何抽象方法的抽象类,其目的主要是防止实例化这个类。

读书人网 >编程

热点推荐