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中,创建数组有两个步骤: 声明一个对数组的 ...
 
随机推荐
- 用Jquery获取select的value和text值
			
$("#select_id").change(function(){//code...}); //为Select添加事件,当选择其中一项时触发 var checkText=$(&q ...
 - JAVA必背面试题和项目面试通关要点
			
一 数据库 1.常问数据库查询.修改(SQL查询包含筛选查询.聚合查询和链接查询和优化问题,手写SQL语句,例如四个球队比赛,用SQL显示所有比赛组合:举例2:选择重复项,然后去掉重复项:) 数据库里 ...
 - 浅谈 MVP in Android
			
一.概述 对于MVP(Model View Presenter),大多数人都能说出一二:“MVC的演化版本”,“让Model和View完全解耦”等等.本篇博文仅是为了做下记录,提出一些自己的看法,和帮 ...
 - 基础4 Android基础
			
基础4 Android基础 1. Activity与Fragment的生命周期. Activity生命周期 打开应用 onCreate()->onStart()->onResume 按BA ...
 - mysql 建立索引场合及索引使用
			
索引建立场合: ① where后边字段 适合建立索引 ② order by 排序字段适合建立索引 ③ 索引覆盖 即 所要查询的字段本身就是索引 直接在索引中查询数据. 例如 select name,a ...
 - 扩展spring data jpa的数据更新方法时注意事项
			
//此处必须加@Transactional,否则不能运行,报错 @Transactional @Modifying @Query("update ExamItem a set a.versi ...
 - EL 表达式
			
转载自 :http://blog.csdn.net/qwerasdf123/article/details/4189889 EL表达式 1.EL简介 1)语法结构 ${expr ...
 - An unknown server-side error occurred while processing the command.处理
			
在调用resetAPP()时,报错:An unknown server-side error occurred while processing the command. 怎么解决呢?请看: 额,Ap ...
 - ActiveX控件(MFC篇)
			
目录 第1章 VC++6.0创建控件 1 1.1 目标 1 1.1.1 方法 1 1.1.2 属性 1 1.1.3 事件 1 1.2 创建项目 2 1.3 项目结构 ...
 - VC++时间函数总结
			
目录 第1章基本概念 1 1.1 基本概念 1 1.2 时间表示法 2 第2章 Win32 API 3 2.1 获取 3 2.1.1 时间间隔 3 2.1.2 时刻 ...