今天是第七天,我们来学点比较重要的东西,那就是继承跟多肽,在java面向对象三大特性中 有封装 继承 多肽。之前我们已经学过封装,也了解一点继承,今天详细来说明这两个特性。以后面试问道你面向对象三大特性 也能回答的上来。

继承

第二章中我们就有了解过继承

为了不用必须维护正方形 圆形 三角形 阿基米虫 4个类的rotate 和playSound方法,我们之前抽像出来一个shape的类,里面有rotate playsound两个方法,而那个四个类只要继承shape,就可以实现rotate 和playSound。那么shape就是四个类的父类,四个类就是shape的子类。

优点1: 如果rotate方法有什么变化的话,只要修改父类的rotate的方法就可以,其他四个类就不需要维护。

优点2: 而如果四个类playSound方法的不一样的话,那么只需要在对应的类里面重写playplaySound方法就可以。

例1 :父类 shape的playSound方法中 播放的是 情歌王 其他四个类,square 和circle triangle 都是播放情歌王,amoeba 播放的是 独家记忆 那么三个类都不要修改,只需要 重写amoeba 的 playSoundfang方法

class Shape {//父类

public void rotate(){

//旋转180°

System.out.println("旋转180度-----" );

}

public void playSound(){

System.out.println("play 情歌王-----" );

}

}

public class Amoeba extends Shape{// 子类 阿基米虫类

public void playSound(){//重写playSound方法

System.out.println("play 独家记忆");

}

public static void main(String[] args) {

Amoeba amoeba = new Amoeba();

amoeba.playSound();//主函数中执行playSound();

amoeba.rotate();//主函数中执行rotate();

}

}

执行过程

便于理解 我把继承关系,比作玄幻小说里妖兽父子之间关系,一只很厉害的凤凰 它有强大血统,魔法抗性(属性),以及几个法术,涅盘浴火重生,呼风唤雨,空间切割(方法),那么它的几个孩子(朱雀 青鸾 孔雀)就可以完整继承它的属性,方法。并且可能开发出新的法术(方法),可能因为环境 后期原因(不同需求)后代们 改进了法术(重写方法)

这里我们的观念要转变下,在中国传统文化中,父辈,老师都是比子辈强大博学。而在西方中,他们认为子辈会比先辈强,因为我们是站在巨人的肩上学习,我是比较认可后者的,比如像写代码,前人从研究电开始,设计芯片,制作电脑,研究开发软件,一步步的封装好,我们只要在电脑对应的编译软件上写代码就好,而不用从发明电开始。可能几十年后,封装 继承越来越普遍 人们出行越来越方便 越廉价 越重复的劳动力 将会被替代 无人驾驶 代替 司机 代驾,人脸识别代替保安 ,一切都是有可能的。

在书中170页有个继承的设计,给我们讲述了继承是怎么设计的

这边比较浅显 一眼就能看出他们都属于 动物这个类,那么动物就是父类,这些就是子类,可是子类太多可以继续继承,将犬科动物 猫科动物 两栖动物 三个类抽象出来继承 动物类 而具体的六种动物根据特性分别继承 犬科动物 猫科动物 两栖动物三个类

在工作开发中,设计继承的时候,一定要记得父类越抽象,子类越具体,根据方法 属性 来设计。

继承到这里 你差不多都学会了,但是继承也是有很多弊端

首先我们需要明确,继承存在如下缺陷:

1、父类变,子类就必须变。

2、继承破坏了封装,对于父类而言,它的实现细节对与子类来说都是透明的。

3、继承是一种强耦合关系。

继承为了避免 冗余 (重复代码)肯定是耦合度(相互作用、相互影响)特别高.

多肽

从书中184-188页中认真看完就对多肽对象多态性有了个大概的了解这边我们不做详细展开。

只说明下方法的多态性

方法的多态性:

① 方法的重载:同一个方法名称,会根据传入参数的类型及个数不同执行不同的方法体;

② 方法的重写: 同一个方法,会根据子类的不同,实现不同的功能。

方法的重写我们已经例1中有过说明,这里主要讲方法的重载

在工作中重载的用处也是经常用到的,有时候一个方法多个地方使用,但是因为入参的类型不同应该怎么处理?这里就用到了重载,如上图的操作,addNums方法中因为入参有可能是int类型 或者double类型所有重载了addNums方法。

总结下 今天这章内容是个重点 知识点一共有继承 多肽 重写 重载。

java对象的封装继承和多肽_java零基础入门第七天 继承 多肽 重写 重载相关推荐

  1. java arrayadapter_Android零基础入门第40节:自定义ArrayAdapter

    ListView用起来还是比较简单的,也是Android应用程序中最重要的一个组件,但其他ListView可以随你所愿,能够完成很多想要的精美列表,而这正是我们接下来要学习的内容. 一.自定义Arra ...

  2. java写轮播图,Android零基础入门第49节:AdapterViewFlipper图片轮播

    上一期学习了ExpandableListView的使用,你已经掌握了吗?本期开始学习AdapterViewFilpper的使用. 一.认识AdapterViewFilpper AdapterViewF ...

  3. java编写桌球游戏素材小球图片_Java|零基础开发桌球小游戏项目

    //桌球游戏开发 import java.awt.; import javax.swing.; public class BallGame2 extends JFrame { Image ball=T ...

  4. 2021-11-10----韩顺平Java入门第七天

    韩顺平Java入门第七天 1.标识符     标识符的概念         ①java对各种变量.方法和类等命名是使用的字符序列称为标识符.         ②凡是自己可以起名字的地方都叫标识符 in ...

  5. java中创建对象的一般格式是什么_Java零基础快速入门|对象的创建和使用(下)...

    本篇文章主要内容:构造方法Constructor 空指针异常 当实例变量是一个引用 方法调用时参数的传递问题 难点解惑 构造方法Constructor 什么是构造方法?构造方法怎么定义?构造方法怎么调 ...

  6. java零基础自学_Java零基础自学经验

    Java零基础自学经验 学习Java数学不好行不行?要到能自己开发小软件的水平要多久,入门需要看些什么材料啊,网上资料不是很好,培训又要花钱,新手零基础如何自学Java比较快速?下面是由百分网小编为大 ...

  7. java框架基础教程_Java零基础教学,分分钟掌握基础学习框架

    原标题:Java零基础教学,分分钟掌握基础学习框架 想学Java,刚开始有没有觉得无从下手呢?其实Java的基础知识点,并不多,但是一定要吃透,因为这是为后续核心的学习打下一个良好的基础.简单来说,就 ...

  8. java变量三要素_Java零基础快速入门|变量

    本文章主要内容:字面量 变量概述 使用变量 变量分类 变量作用域 难点疑惑 学习目标:理解变量本质是什么,在开发中有什么用? 变量三要素是什么? 怎么声明变量? 怎么给变量赋值? 变量是如何分类的? ...

  9. 尚硅谷Java零基础极速入门七天版笔记

    Java零基础极速入门 文章目录 Java零基础极速入门 1 Java快速入门 1.1计算机语言 1.2 Java语言 1.3 JVM 1.4 环境配置 2 基础语法 2.1 变量 2.2 标识符 2 ...

  10. Java基础入门第三版黑马课后习题(编程部分)

    第 1 章 Java 开发入门 第 2 章 Java 编程基础 1. 编写程序,计算1+3+-+99的值,要求如下: (1)使用循环语句实现1~99的遍历 (2)在遍历过程中,通过条件判断当前的数是否 ...

最新文章

  1. 「AI大牛」陶大程出任京东探索研究院院长!曾连续6年入选全球高被引科学家...
  2. NTPDATE - no server suitable for synchronization found 修复
  3. C++ 基本数据类型
  4. 2017全球中国锂电池市场趋势概述
  5. Paper Review: Bayesian Shrinkage towards Sharp Minimaxity
  6. linux 拆分文件 多个,linux把一个文件拆分
  7. extjs 月份选择控件_ExtJs日期控件案例(可控制时间的选择) | 学步园
  8. android fragment学习4-底部布局扩展TabLayout
  9. php讲一个正整数前补0,php 数字补零的两种的简单示例
  10. Struts2 标签
  11. UNP Chapter 3 - 套接口编程简介
  12. 十六进制转十进制_跟运维组学Python之秒懂十六进制
  13. Pycharm修改镜像源并添加信任
  14. STM32f4日记9之LD3320语音识别(您的私人语音助手MICRO)
  15. 常用数字电路模块:边沿检测电路
  16. python中argument什么意思_Python中parameters与argument区别
  17. python hdf5_安装HDF5 1.8 和H5PY--HDF5和python接口
  18. centOS8安装vmtools
  19. Eigen零零散散的一些总结
  20. 语音播报警示器技术要求

热门文章

  1. 线性代数中解方程组的加减消元和求特征向量的加减消元的区别
  2. 从零部署Linux服务器完全指南2022版(CentOS 8+Nginx+PHP)
  3. Spring Bean前置后置处理器的使用
  4. html的nofollow标签,nofollow标签两种使用方法及案例
  5. 在MacOS系统下DMG文件显示压缩包无法双击安装解决办法
  6. 单词拼写检查之cutoff距离
  7. Python练习---turtle绘图之绘制天安门
  8. fastbin attack学习总结
  9. 如何用python批量处理图片大小_Python批量修改图片大小
  10. python中import用法sys_python sys模块的常见用法汇总