java面向对象编程— —第七章 继承
7.1继承的起源
继承(Inheritance),即在面向对象编程中,可以通过扩展(extends)一个已有的类,并继承该类的属性的行为,来创建一个新的类。
已有的类称为父类(也可以称为基类,超类),而新类称为子类(也可以称为派生类)。
继承的优点:代码的可重用性;父类的属性和方法可用于子类;子类可以扩展父类的属性和方法;设计应用程序变得更加简单。
7.2 继承的使用原则
- 观察要使用的类,确定它们之间共同的和特有的属性和行为,将这些共性数据迁移到父类里,便于子类中进行方法和属性的重用。
- 对于不同的属性和行为,在子类中可以重新定义。
- 在Java中,一个类只有一个父类。一个类不能同时继承两个类。
- 所有类的根类都是Object
子类继承父类时,在子类对象产生前会先产生一个父类对象,然后在此基础上扩展子类特有的属性和方法。因此子类可以继承父类所有的属性和方法。所以继承也叫扩展。
7.3 重写
重写发生在父类和子类之间,子类的方法名和父类相同,参数列表也相同,返回类型也相同。当调用方法时,优先调用子类重写的方法。如果子类没有重写父类的方法,那么就调用父类的方法。
在方法前,可以加上注解@Override,强行检测当前方法是否重写了父类方法。如果没有重写到父类方法,则编译错误。
finalize()是在垃圾回收对象之前,做一些清理工作。
7.4 super代表父类对象,super()代表父类的构造方法,产生父类对象。子类继承于父类,如果在子类构造方法中没有通过super()调用父类的构造方法产生父类对象,虚拟机会自动加上super()。如果父类中没有提供无参构造方法,那么子类必须通过super(实参)进行显示调用。否则,子类无法通过super()进行父类无参构造方法的调用,从而编译错误。super()必须是子类构造方法的第一行代码
7.5 final
关键字final表示变量不可被修改;方法不能被重写;类不能被继承。
final 类型修饰变量时,如果修饰基本类型,表示基本类型的值不能改变;如果修饰引用类型,表示该变量不能指向别的对象,但对象的属性值可以改变。
7.6 构造方法不能被子类所继承,但子类对象创建时,会调用父类的构造方法产生父类对象。由于子类对象中包含完整的父类对象,所以父类对象中的所有属性和方法都是可以继承的(包括私有属性和私有方法)。只是私有属性和私有方法不能被子类直接访问。
java面向对象编程— —第七章 继承的更多相关文章
- Java面向对象编程:封装,继承,多态
Java面向对象的三大特征: 封装:通过Java的类来实现数据和操作方法的封装,对外界可以将每一个Java类都视为一个黑箱,只需调用该黑箱提供的方法即可完成你想要的操作. 继承:通过类的继承,将统一的 ...
- java面向对象编程——第四章 类和对象
OO:面向对象 OOP:面向对象编程 OOA:面向对象分析 OOD:面向对象设计 结构化编程:从顶向下,将一个大问题分解成更小的任务,然后为每一个更小的任务编写一个过程.最后程序员会编写一个主过程来启 ...
- java面向对象编程——第五章 对象的行为
5.1 方法调用栈 当一个方法被调用时,将导致控制流程跳转到被调用的方法.然后,控制流程执行方法中的语句.当然,被执行的方法可能会调用其它方法,导致控制流程跳转到其它方法.所有的方法调用都维护在一个称 ...
- JAVA / MySql 编程——第七章 JDBC
1.JDBC:JDBA是Java数据库连接(Java DataBase Connectivity)技术的简称,提供连接各种常用数据库的能力: ●Java是通过JDBC技术实现对各种数据 ...
- java 面向对象编程-- 第十三章 反射、类加载与垃圾回收
1.狭义JavaBean规范 Javabean必须包含一个无参数的public构造方法,方便通过反射的方式产生对象. 属性必须都是私有的. Javabean必须包含符合命名规范的get和set方法,以 ...
- java面向对象编程(七)--四大特征之多态
1.多态概念 多态性是对象多种表现形式的体现.比如我们说"宠物"这个对象,它就有很多不同的表达或实现,比如有小猫.小狗.蜥蜴等等.那么我到宠物店说"请给我一只宠物&quo ...
- 2.Java面向对象编程三大特性之继承
在<Think in Java>中有这样一句话:复用代码是java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复用代码并对其加以改变是不够的,他还必须能够做更多的事情.复用 ...
- java 面向对象编程-- 第15章 集合框架
1. 集合特点:元素类型不同.集合长度可变.空间不固定 2. java中对一些数据结构和算法进行了封装即集合.集合也是一种对象,用于存储.检索.操作和传输对象. 3. JCF(Java Coll ...
- java面向对象编程——第六章 数组
1.数组概述 数组是存储在一个连续的内存块中的元素集合.数组中的每个元素必须是相同的数据类型,并且通过索引进行区分.数组中的第一个元素的索引为0. 在java中,创建数组有两个步骤: 声明一个对数组的 ...
随机推荐
- ubuntu安装jdk-6u45-linux-x64.bin___ZC_20160423
for : Android4.4源码编译 环境 : ubuntu12.04_desktop_amd64 1. 1.1.jdk-6u45-linux-x64.bin 放置于 /home 1.2.命令&q ...
- Oracle 10g实现存储过程异步调用
DBMS_JOB是什么?DBMS_JOB是Oracle数据库提供的专家程序包的一个.主要用来在后台运行程序,是数据库中一个极好的工具. 可用于自动调整调度例程任务,例如分析数据表,执行一些归档操作,清 ...
- 本地存储 localStorage/sessionStorage/cookie
cookie是个基础的东西.是服务器发送到客户端,存储在客户端的一小段数据.可以存储一些配置信息,客户标识信息等.用户下次访问这个网站时,会把上次网站发来的cookie一同发送回去.cookie保存在 ...
- 使用连接(JOIN)来代替子查询(Sub-Queries) mysql优化系列记录
使用连接(JOIN)来代替子查询(Sub-Queries) MySQL从 4.1开始支持SQL的子查询.这个技术可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查 ...
- 转载---jboss简单使用
初学Jboss,对于Jboss的基础认识以及配置做一些记录 Jboss基础: JBoss是什么–基于J2EE的应用服务器–开放源代码–JBoss核心服务不包括支持servlet/JSP的WEB容器,一 ...
- D3.js 让图表动起来
D3 支持制作动态的图表.有时候,图表的变化需要缓慢的发生,以便于让用户看清楚变化的过程,也能给用户不小的友好感. 一.什么是动态效果 绘制完成后不再发生变化的,这是静态的图表. 动态的图表,是指图表 ...
- word2010表格中的内容怎么设置行距
选中表格,然后根据箭头指示点击 弹出如下对话框,选择行距
- 合并Excel文件
//合并Excel文件 private void MargeExcelFile(string destFile, string dirPath) { DirectoryInfo dir = new D ...
- hiho_1069_最近公共祖先3
题目 给出一棵家族树,树上的节点可以由名字唯一标识.给出若干个查询,查询的内容为两个名字,结果为两个名字的最近公共祖先. 题目链接: 最近公共祖先 分析 在线的RMQ + LCA 算法,先用dfs将树 ...
- PacBio全基因组测序和组装
PacBio公司的业务范围也就5个(官网): Whole Genome Sequencing Targeted Sequencing Complex Populations RNA Sequencin ...