抽象类和接口

一、简单描述

抽象类和接口作为面向对象思想的两个重要概念,在面向对象编程中起到举足轻重的作用。

  • 接口:方法定义与常量值定义的集合,方法没有函数体
  • 抽象类:定义普通类所包含的所有内容,以及抽象方法

抽象类和接口本身都不能被实例化,必须在相应的子类中才能实现抽象方法,得以获得应用。

提出问题:接口和抽象类中的抽象方法无函数体,不能实例化,无法获得应用,那么为什么要定义它们呢?
举个栗子 !!!
例如我在写这篇文章的时候,一定要先思考好先写什么,后写什么;在解数学题时,要思考题目考察什么内容,需要哪些公理、哪些定理等;在产品生产时,要制定完善的工艺流程等。其实,在我们日常生活中也在用到“抽象类和接口”思维。也就是说,人们在做任何事情前,一般来说都会先想好,再去实现,我们变成也一样。因此,Java语言也在反映“思考-实现”这一过程,通过接口和抽象类来反映思考阶段,用子类来反映实现阶段。【小提示:先理清思路,再编码,可能事半功倍噢!!】

同样,对于为什么接口、抽象类不能本身实例化,必须由子类实现这个问题,其实就是思考过程中提出了问题,总得有解决问题的方法嘛。在Java中是通过子类类实现的,来解决“思考”过程中提出的所有问题。

可能你会疑惑:既然抽象类定义的内容比接口中的内容要多得多,那么为什么还要接口呢?既生瑜,何生亮?
其实这个问题,就像人们在思考过程中提出的问题分类一样,一般可以分为“顺序”问题和“顺序+共享”问题,也就是说接口和抽象类正对应这样的问题分类。举个栗子,可能就更清楚了。

二、实例分析

一般汽车的生产可大致分为四个工序:钢板切割、压模、组装与喷漆。此时按照生产工艺流程,此工序为顺序执行,可按照内容抽象成接口,如下图;
在这里插入图片描述
抽象类和接口不同。市面上同一家电脑厂商,可以有多种不同价位的电脑,其配置参数也不一样。
在这里插入图片描述
因此,要配置n种电脑,每种电脑的硬盘、光驱和显示器可以是不同类型的,属于并列结构,也可以看做顺序结构,而主板是相同类型的,属于共享结构。因此,转换为抽象类如下:

abstract class Computer{
	abstract void makeHardDisk();
	abstract void makeOptioncal();
	abstract void makeMonitor();
	void makeMainBoard(){};       //所有类型的电脑都有相同类型的主板
}

生活中处处是哲学,享受生活,体味生活,更好生活。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值