网站首页 > java教程 正文
上期回顾:
前面我们讲了面向对象编程的一些基础知识,主要包括:类、对象的定义,封装和信息隐藏的概念,以及封装的好处。本期我们主要讨论“继承”,这也是面向对象的编程与设计中的一个重要特性。
那么继承具体是指什么,这个概念如何产生的呢?
我们将一些特定类别的事物提取共同点,归纳出来,成为一般类;这样,归纳出的一般类就称为这些特定类的基类(也叫超类),而这些特定类成为派生类(也叫子类)。
这些派生类可以继承基类的运行规律、方法(特性)。反过来说,基类是派生类更高级别的抽象,因为它提炼了派生类中共同的特性、数据;
通过继承,一个派生类可以直接使用其基类的所有数据和方法,而不需要重新去设计。这里的数据和方法,如果对应到具体程序设计中,往往可以称为成员变量和成员函数。
我们还是使用前面的例子,从轿车类、公交车类、卡车类等,可以提炼、抽象出汽车类,作为基类,然后轿车类、公交车类可以继承汽车类的一些数据和方法,具体包括品牌、型号、耗油量等数据,点火、熄火、刹车等方法;而汽车类可以派生出轿车类、公交车类和卡车类等。
我们再来讲讲继承的主要好处,也即,通过类的继承关系,使同类事物所具有的公共特性、数据能够复用、共享,简单来说,也就是可以提高复用程度,减少重复工作。
这里顺便提一下组合的概念。
组合,在某种程度上,它也可以提高复用程度,但概念上不一样,使用场景也有所区别。
例如,眼(Eye)、鼻(Nose)、口(Mouth)、耳(Ear)是头(Head)的一部分,所以类Head 应该由类Eye、Nose、Mouth、Ear 组合而成,而不是派生出来,因为Head不是一种Eye,也不是Nose。
小结:
在逻辑上,如果A类是B 类的“一种”(a kind of),则应该设计成A为B的派生类,这样A可以继承B的数据和方法;
在逻辑上,如果A 类是B 类的“一部分”(a part of),则应该设计成组合关系,让A为B的数据,具体到编程概念,就是让A作为B的成员变量。
今天我们就讲到这里,下期将为大家讲述面向对象编程的另外一个重要特性:多态性。
作者:星河。更多编程内容,从零基础开始学,一步步的,请关注公号vjiazhi。
猜你喜欢
- 2024-12-15 java面向对象中多态容易走人的误区
- 2024-12-15 面向对象和面向过程的区别 面向对象和面向过程的区别在于
- 2024-12-15 java面向对象程序设计:把大象装进冰箱
- 2024-12-15 Android应用编程基础第18篇:Java面向对象技术点补
- 2024-12-15 Java 面向对象——测试题,笔试,快进来考考你自己
- 2024-12-15 Java面向对象之接口——interface
- 2024-12-15 从零开始学JAVA-04.JAVA面向对象入门第一季
- 2024-12-15 Java 学习之面向对象思想、类、对象
- 2024-12-15 Java学习之面向对象——Java基础篇
- 2024-12-15 面向对象设计的工作步骤一 面向对象设计的五大原则
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)