`
eriol
  • 浏览: 409182 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

对于抽象类的进一步体会

    博客分类:
  • Java
 
阅读更多

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

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方法都显得没有实际意义,而且我们也想要阻止产生这个类的任何对象...”

 

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

0
0
分享到:
评论

相关推荐

    实验接口java

    本实验旨在深入理解接口的概念以及它与抽象类之间的关系。以下将详细阐述实验内容,包括接口的定义、使用,以及接口与抽象类的区别。 1. 应用接口例子: 接口通常用于定义一组方法,但不提供具体实现。例如,我们...

    Java的实训心得体会范文.doc

    学习继承、构造器、抽象类、接口、多态性、重载和覆盖等概念需要时间和实践。特别是对于没有面向对象编程经验的人来说,这可能是一项挑战。不断与同学交流,反复阅读教材,是深化理解的有效方式。 Java的标准类库...

    完成Java面向对象程序设计实验课的心得体会

    继承机制使得我们可以创建基于已有类的新类,减少重复代码,提高代码复用。多态性则允许我们设计出更为灵活的系统,不同的对象可以根据上下文环境执行不同的行为,增强了程序的灵活性。 实验课中的四个部分分别涉及...

    uml学习总结-类图、序列图

    - 第一层:类名,如果是抽象类则字体通常为斜体。 - 第二层:类的属性(即数据成员),通常表示为变量。 - 第三层:类的方法或行为,通常表示为函数签名。 - **类之间的关系**:类图中表示了几种重要的关系,...

    java实验三 类的继承--圆.rar

    在Java编程语言中,类的继承是面向对象编程的一个核心概念。这个"java实验三 类的继承--圆.rar"文件显然包含了一...这不仅是学习Java的基础,也是进一步学习高级概念,如接口、抽象类、异常处理和集合框架的关键步骤。

    java实验代码

    实验9 抽象类、接口练习  实验10 多态练习  实验11 多线程处理  实验12 I/O及文件处理  实验目的:掌握并使用Java中的I/O和文件。  心得体会:对于该实验,由于比较难,只是基本掌握了文件读写的...

    计算机实训心得体会(通用10篇).pdf

    同时,实训活动也让学生们意识到持续学习的必要性,特别是对于计算机技术这类快速发展的领域,保持学习热情和敏锐度是十分重要的。 实训还促进了团队协作和沟通能力的提升。在面对共同的任务和挑战时,同学们需要...

    编程注意的点

    对于Java这样的面向对象语言,理解"对象"和"类"的概念是基础,而掌握好面向对象的三大特性——封装、继承、多态,以及抽象,是进一步提升的关键。愿你在编程学习的道路上越走越远,不断提升,成为一名出色的程序员。

    小学数学讲究数学思想方法化抽象为具体教学教案三四年级段

    这个环节不仅能够让学生在实践中体会比较快慢的方法,还能够让学生在互相合作的过程中培养团队协作能力。 在比较过程中,教师需要引导学生观察和分析数据。例如,当两只猎豹走过的路程相同时,学生可以通过比较它们...

    java设计模式之简单工厂.zip

    - **产品接口/抽象类**:定义了工厂生产的对象的共同接口或抽象类,如`Product`。 - **具体产品类**:实现了产品接口或继承自抽象类的具体产品,如`ConcreteProductA`、`ConcreteProductB`。 - **工厂类**:负责...

    下面是我对于JAVA学习的一些心得体会

    类的继承使得代码可复用性增强,接口则提供了抽象和多态的实现方式,异常处理则保证了程序的健壮性。 深入理解JAVA的内存管理和垃圾回收机制是提升程序性能的关键。JAVA通过自动内存管理,避免了程序员手动管理内存...

    《抽象代数》课程教学大纲.pdf

    总体而言,《抽象代数》课程内容丰富,涉及了数学中的基本理论和概念,对于想要深入了解现代数学理论的学生来说,是一门极具价值的课程。通过这门课程,学生不仅能够增强对数学核心概念的理解,还能够体会到数学之美...

    《含参数一元二次不等式解法》听课体会.docx

    《含参数一元二次不等式解法》的听课体会主要围绕着教学策略、方法以及学生的学习体验展开,深入探讨了如何有效地教授这类复杂问题。一元二次不等式是高中数学中的重要知识点,而含参数的情况则进一步提升了难度,...

    c++多态性与虚函数练习题

    - **抽象类**:包含至少一个纯虚函数的类被称为抽象类,不能实例化对象,只能作为其他类的基类。 ### 实验内容详解 #### 实验1: 多态性基础 1. **定义类A** - 包含两个私有整型变量`a`和`b`。 - 构造函数用于...

    在地理教学中运用农远资源的体会.doc

    描述中的“在地理教学中运用农远资源的体会.doc”表明这是一份文档,详细记录了作者在使用这类资源时的心得。 农远资源,即农村远程教育资源,是专为农村地区教师和学生设计的一种教育支持系统,它通过卫星等方式...

    C++编程思想,进一步理解c++

    内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚函数、模板和包容器...

    修练8年C++面向对象程序设计之体会

    这种方法虽然过于简化,但在一定程度上可以帮助初学者理解如何从现实世界中抽象出对象。 #### 五、面向对象编程语言 **1. C++**:C++是一种流行的面向对象编程语言,它兼容C语言,并且具有强大的性能。C++提供了...

    java设计模式之适配器模式.zip

    在Java中,这通常是一个抽象类或接口,定义了客户端期望的方法。 2. **适配器(Adapter)**:适配器类是适配器模式的核心,它实现了目标接口,并通过内部持有适配者对象,将适配者对象的方法转换为目标接口的方法。...

    新版一年级下册分类和整理第一课时.ppt

    综上所述,“新版一年级下册分类和整理第一课时”通过一系列生动、有趣的教学活动和互动环节,使得抽象的数学知识具体化、可视化,让孩子们在轻松愉快的氛围中学习数学,培养逻辑思维能力和解决问题的能力。...

    实验四:工厂模式.rar

    2. **创建具体产品类**:基于产品接口或抽象类,创建多个具体产品类,如`ProductA`和`ProductB`,它们分别实现了`Product`接口中的方法。 3. **定义工厂接口**:定义一个工厂接口,例如`Factory`,它有一个方法用于...

Global site tag (gtag.js) - Google Analytics