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中,创建数组有两个步骤: 声明一个对数组的 ...
随机推荐
- eclipse查看jdk源码,及反编译查看
jdk中的包: dt.jar是关于运行环境的类库,主要是swing的包 tools.jar是关于一些工具的类库 rt.jar包含了jdk的基础类库,也就是你在java doc里面看到的所有的类的cla ...
- springmvc前后端传值
@pathvible 后端传值(rest风格) exp: @requestMapping("/view/{userId}") public String getiew(@Parth ...
- 优秀c++开源项目集合
本文会持续更新, 我希望通过这篇文章把我看到过的优秀开源项目记录下来, 有时间仔细阅读. cockroachdb 前googler开发的开源的spanner数据库: https://github.co ...
- 12 Using_explain_plan
The row source tree is the core of the execution plan. The tree shows the following information: An ...
- PHPStorm怎么修改选中的背景颜色呢?
File -> Settings -> editor ->color&fonts->general->下拉框中的selection background-> ...
- JavaWeb 8 Cookie
JavaWeb 8 Cookie 2. 会话管理入门 2.1 生活中会话 我: 小张,你会跳小苹果码? 小张: 会,怎么了? ...
- iOS 开发之照片框架详解(1)
http://kayosite.com/ios-development-and-detail-of-photo-framework.html/comment-page-1 一. 概要 在 iOS 设备 ...
- Centos7 PHP7 编译安装 开机自启动
1.PHP7.0.13下载 wget http://cn2.php.net/get/php-7.0.13.tar.gz/from/this/mirror 2.解压 .tar.gz 3. 进入目录 cd ...
- Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅
Android 高手进阶(21) 版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请注明出处http://blog.csdn.net/xiaanming/article/details ...
- android坐标
说来说去都不如 画图示意 简单易懂啊!!!真是的! 来吧~~先上张图~~! (一)首先明确一下 android 中的坐标系统 : 屏幕的左上角是坐标系统原点(0,0) 原点向右延伸 ...