用继承进行设计

用继承进行设计前言在我们学习多态的过程中会有这样一种体会,看起来似乎所有的东西都可以被继承。 事实上,当我们用现成的类来建立新类时,如果首先考虑使用继承技术,反倒会加重我们的设计负担,使事情变得不必要地复杂起来。 那我们对程序进行设计时应该选择哪种技术呐?答案是:首先选择“组合”。尤其是不能十分确定应该使用哪一种方式时。组合不会强制我们的程序设计进入继承的层次结构中。而且,组合更加灵活,因为它可以动态选择类型(因此也就选择了行为);相反,继承在编译时就需要知道确切类型。 注:本篇先不详细阐述继承和组合的关系,在后面的文章中将进行详细讲解代码示例package ThinkInJava; ...

Java 2019-10-16 AM 1168℃ 0条

协变返回类型

协变返回类型前言一个菜鸟对《Java编程思想》的探索之路。1.概念理解Java SE5中添加了协变返回类型,它表示在导出类中的被覆盖方法可以返回基类方法的返回类型的某种导出类型。上方是《Java编程思想》的原文,第一遍读的时候是不是感觉很绕...... 意思就是: 子类中的成员函数的返回值类型不必严格等同于父类中被重写的成员函数的返回值类型,而可以是更 "狭窄" 的类型 。也就是允许返回更为具体的类型 。2.代码下面我们用一个示例来更深的理解:public class CovarianReturn { /** * @param args */ p...

Java 2019-10-15 AM 1199℃ 0条

构造器内部多态方法的行为

构造器内部多态方法的行为前言关于《Java编程思想》的探索之路.....探讨该问题时对构造器调用顺序进行一下梳理:1.调用基类构造器 ,不断递归下去, 首先是构造这种层次结构的根,然后是下一层导出类,等等,直到最低层的导出类;2.按声明的顺序调用成员的初始化方法;3.调用导出类构造器的主体。一、构造器层次结构的调用如果在一个构造器的内部调用正在构造的对象的某个动态绑定的方法,会发生什么有趣的事情?在一般的方法内部,动态绑定的方法的调用是在运行时才决定的,对象在程序运行之前无从得知它自己到底是基类的对象,还是某个导出类的对象。如果在基类的构造器内部调用某个动态绑定方法,并且该方法是被导出类...

Java 2019-10-15 AM 1350℃ 0条

MySQL基本操作

MySQL基本操作一、 服务器操作开启服务器(windows服务):net start mysql关闭服务器(windows服务):net stop mysql查看进程表中是否存在:mysqld.exe二、数据备份与恢复数据库导出SQL脚本(备份数据库内容)> mysqldump -u用户名 -p密码 数据库名>生成的脚本文件路径例如:mysqldump -uroot -p123456 myselfdb>D:\demo\myself.sql注意:不要打分号,不要登录mysql,直接在cmd下运行注意:生成的脚本文件中不包含create database语句执行SQL脚本...

其它 2019-10-14 PM 1370℃ 1条

Typora快捷键

Typora快捷键:无序列表:输入-之后输入空格有序列表:输入数字+“.”之后输入空格任务列表:-[空格]空格 文字标题:ctrl+数字表格:ctrl+t生成目录:[TOC]按回车选中一整行:ctrl+l选中单词:ctrl+d搜索:ctrl+f替换:ctrl+h引用:输入>之后输入空格 Ctrl+shift+Q代码块:ctrl+shift+K加粗:ctrl+b倾斜:ctrl+i下划线:ctrl+u删除线:alt+shift+5插入图片:直接拖动到指定位置即可或者ctrl+shift+i插入链接:ctrl + k切换显示:ctrl+shift+L输入公式:ctrl+shift+M...

工具 2019-10-14 PM 5490℃ 1条