`
eriol
  • 浏览: 401354 次
  • 性别: 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课程设计心得体会.docx

    详细设计的结果是对数据结构的基本操作的规格说明做出进一步的求精,写出数据存储结构的类型定义,按照算法书写规范用类c语言写出函数形式的算法框架。 通过这次课程设计,使我灵活应用所学数据结构知识,独立完成...

    java实验代码

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

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

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

    二十三种设计模式【PDF版】

    和智慧,让你能够真正掌握接口或抽象类的应用,从而在原来的 Java 语言基础上跃进一步,更重要的是,GoF 的设计模式反复 向你强调一个宗旨:要让你的程序尽可能的可重用。 这其实在向一个极限挑战:软件需求变幻...

    java大作业设计报告-JAVA聊天室.doc

    图 5-1聊天室服务器代码布局 服务器将用户操作抽象为不同的工作类,在接收到请求后根据消息协议在当前实现的 工作类名列表中找到类名(通过下标在CommandList类中的List&lt;String&gt; commandsList属性中得到),通过...

    java设计模式CatalogDAOFactory是典型的工厂方法

    那么,我们就将上例中Factory变成抽象类,将共同部分封装在抽象类中,不同部分使用子类实现,下面就是将上例中的Factory拓展成抽象工厂: public abstract class Factory{  public abstract Sample creator();  ...

    小型公司管理系统C++课程设计(含源代码).doc

    具体一点主要是为了进一步熟悉C++中类的概念、类的继承、抽象类、虚函数 、虚基类、多态和文件的输入/输出等内容的实现方式。了解系统开发的需求分析 、类层次设计、模块分析、编码测试、模块组装与整体调试的全...

    JAVA记事本的设计与实现.doc

    7 3.6.1 主类 7 3.6.2 记事本类 8 3.6.3 左侧面板类 9 3.6.4 月份显示类 9 3.6.5 年月显示类 9 3.6.6 背景音乐类 10 3.6.7 日期获取类 10 3.6.8 右侧记事本显示类 11 3.6.9 记事本弹出菜单类 11 4. 各种功能截图 12 ...

    Spring.net框架

    由于接口在进行“动态代理” 时仍能保持类型信息,而抽象类可能由于代理的原因导致继承关系的“截断”(如MixIn等)。除此之外,对于单继承的C#语言而言,使用接口可以拥有更大 的弹性。 二、接口依赖 既然类之间的...

    head_first_design_patterns.pdf Head First 设计模式(英文原版 非扫描)

    本书荣获2005年第十五届Jolt通用类图书震撼大奖。 本书英文影印版被《程序员》等机构评选为2006年最受读者喜爱的十大IT图书之一 。 本书趋近完美,因为它在提供专业知识的同时,仍然具有相当高的可读性。叙述权威、...

    语言程序设计课后习题答案

    面向对象的编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征),形成类。通过类的继承与多态可以很方便地实现代码重用,大大缩短了软件开发周期,并使得...

    计算机网络课程学习心得.docx

    对这门课程有了进一步的认识,下面对学习笔记总结如下几点: 一、学习笔记总结 1、参考先进的课程教学模式 《计算机网络》被列为计算机专业和信息类专业的核心基础课程之一,其教学目标是为以后计算机网络及其应用的...

    《计算机操作系统》期末复习指导

    实时是指计算机对于外来信息能够以足够快的速度进行处理,并在被控对象允许的时间范围内做出快速反应。交互作用能力较差。 3、操作系统的五大功能 •作业管理:包括任务管理、界面管理、人机交互、图形...

Global site tag (gtag.js) - Google Analytics