今天在看一个工厂方法的代码示例中,发现该示例中定义了一个抽象类但却没有任何抽象方法,代码如下所示。
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方法都显得没有实际意义,而且我们也想要阻止产生这个类的任何对象...”
总结如下:可以创建一个没有任何抽象方法的抽象类,其目的主要是防止实例化这个类。
分享到:
相关推荐
本实验旨在深入理解接口的概念以及它与抽象类之间的关系。以下将详细阐述实验内容,包括接口的定义、使用,以及接口与抽象类的区别。 1. 应用接口例子: 接口通常用于定义一组方法,但不提供具体实现。例如,我们...
学习继承、构造器、抽象类、接口、多态性、重载和覆盖等概念需要时间和实践。特别是对于没有面向对象编程经验的人来说,这可能是一项挑战。不断与同学交流,反复阅读教材,是深化理解的有效方式。 Java的标准类库...
继承机制使得我们可以创建基于已有类的新类,减少重复代码,提高代码复用。多态性则允许我们设计出更为灵活的系统,不同的对象可以根据上下文环境执行不同的行为,增强了程序的灵活性。 实验课中的四个部分分别涉及...
- 第一层:类名,如果是抽象类则字体通常为斜体。 - 第二层:类的属性(即数据成员),通常表示为变量。 - 第三层:类的方法或行为,通常表示为函数签名。 - **类之间的关系**:类图中表示了几种重要的关系,...
在Java编程语言中,类的继承是面向对象编程的一个核心概念。这个"java实验三 类的继承--圆.rar"文件显然包含了一...这不仅是学习Java的基础,也是进一步学习高级概念,如接口、抽象类、异常处理和集合框架的关键步骤。
实验9 抽象类、接口练习 实验10 多态练习 实验11 多线程处理 实验12 I/O及文件处理 实验目的:掌握并使用Java中的I/O和文件。 心得体会:对于该实验,由于比较难,只是基本掌握了文件读写的...
同时,实训活动也让学生们意识到持续学习的必要性,特别是对于计算机技术这类快速发展的领域,保持学习热情和敏锐度是十分重要的。 实训还促进了团队协作和沟通能力的提升。在面对共同的任务和挑战时,同学们需要...
对于Java这样的面向对象语言,理解"对象"和"类"的概念是基础,而掌握好面向对象的三大特性——封装、继承、多态,以及抽象,是进一步提升的关键。愿你在编程学习的道路上越走越远,不断提升,成为一名出色的程序员。
这个环节不仅能够让学生在实践中体会比较快慢的方法,还能够让学生在互相合作的过程中培养团队协作能力。 在比较过程中,教师需要引导学生观察和分析数据。例如,当两只猎豹走过的路程相同时,学生可以通过比较它们...
- **产品接口/抽象类**:定义了工厂生产的对象的共同接口或抽象类,如`Product`。 - **具体产品类**:实现了产品接口或继承自抽象类的具体产品,如`ConcreteProductA`、`ConcreteProductB`。 - **工厂类**:负责...
类的继承使得代码可复用性增强,接口则提供了抽象和多态的实现方式,异常处理则保证了程序的健壮性。 深入理解JAVA的内存管理和垃圾回收机制是提升程序性能的关键。JAVA通过自动内存管理,避免了程序员手动管理内存...
总体而言,《抽象代数》课程内容丰富,涉及了数学中的基本理论和概念,对于想要深入了解现代数学理论的学生来说,是一门极具价值的课程。通过这门课程,学生不仅能够增强对数学核心概念的理解,还能够体会到数学之美...
《含参数一元二次不等式解法》的听课体会主要围绕着教学策略、方法以及学生的学习体验展开,深入探讨了如何有效地教授这类复杂问题。一元二次不等式是高中数学中的重要知识点,而含参数的情况则进一步提升了难度,...
- **抽象类**:包含至少一个纯虚函数的类被称为抽象类,不能实例化对象,只能作为其他类的基类。 ### 实验内容详解 #### 实验1: 多态性基础 1. **定义类A** - 包含两个私有整型变量`a`和`b`。 - 构造函数用于...
描述中的“在地理教学中运用农远资源的体会.doc”表明这是一份文档,详细记录了作者在使用这类资源时的心得。 农远资源,即农村远程教育资源,是专为农村地区教师和学生设计的一种教育支持系统,它通过卫星等方式...
内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚函数、模板和包容器...
这种方法虽然过于简化,但在一定程度上可以帮助初学者理解如何从现实世界中抽象出对象。 #### 五、面向对象编程语言 **1. C++**:C++是一种流行的面向对象编程语言,它兼容C语言,并且具有强大的性能。C++提供了...
在Java中,这通常是一个抽象类或接口,定义了客户端期望的方法。 2. **适配器(Adapter)**:适配器类是适配器模式的核心,它实现了目标接口,并通过内部持有适配者对象,将适配者对象的方法转换为目标接口的方法。...
综上所述,“新版一年级下册分类和整理第一课时”通过一系列生动、有趣的教学活动和互动环节,使得抽象的数学知识具体化、可视化,让孩子们在轻松愉快的氛围中学习数学,培养逻辑思维能力和解决问题的能力。...
2. **创建具体产品类**:基于产品接口或抽象类,创建多个具体产品类,如`ProductA`和`ProductB`,它们分别实现了`Product`接口中的方法。 3. **定义工厂接口**:定义一个工厂接口,例如`Factory`,它有一个方法用于...