Java基础复习——继承机制
一、写在前面
1.基本作用
代码复用,更重要的就是有了继承机制后才会有后面的“方法重写”和“多态机制”。
2.语法格式
//Student类继承了Person类
public class Student extends Person {}
注意:
- Java语言中的继承只支持单继承,即一个类只能继承一个类(但可以实现多个接口),在C++中支持多继承
- 在Java中所有的类都默认继承了 java.lang.Object 类
3.关于继承的一些术语
B类继承A类
B类称为:子类、派生类、SubClass
A类称为:父类、基类、超类、SuperClass
二、继承机制的要点
1.子类从父类中继承的数据
- 子类可以获得父类的所有成员数据
- 无法获得父类的构造方法
2.重写父类方法
1.什么情况下要重写父类方法?
当子类从父类继承过来的方法对于子类不太合身,不满足当前子类的业务需求,子类则有必要将该继承过来的方法进行重写.
例如:鸟类有飞翔这个方法,但是鸵鸟类继承类鸟类,鸵鸟不再适用飞翔这个方法,则有必要对此进行重写.
2.如何实现方法覆盖?
方法的重写要遵循"两同两小一大同静态"规则.
* 两同:方法名 / 形参列表相同.
* 两小:子类方法返回值类型和子类方法抛出的异常要比父类方法“小或相等".
* 一大:子类方法访问权限要比"大或相等".
* 同静态:静态/成员方法只能对应重写为静态/成员方法,不能改变这个方法的"静态性".
注意:
- 当子类方法覆盖父类方法后,但又想在子类方法中调用父类方法,可用super来调用父类成员方法,用父类名来调用父类静态方法.
- 当父类方法具有private访问权限时,该方法对于子类是隐藏的,子类对其无法访问、无法重写.
补充:
- overload:方法重载,发生在同一个类中
override:方法重写,发生在子类重写父类方法时
三、super关键字
1.如何理解super关键字?
可以把super翻译成"父类的".
2.super关键字的作用
在子类方法中访问父类成员:
1.当子类重写了父类的成员方法时,此时又想在子类方法中调用原来父类的成员方法,可用super调用.(例如你想要鸵鸟飞)
2.当子类定义了与父类同名的成员变量,此时从父类继承过来的成员变量会被隐藏,如果想在子类方法中访问父类的成员变量,可用super来访问父类成员变量.
注意:
- 这里被隐藏的成员数据,在子类对象创建时已经会为其分配内存空间(因为除了父类的构造方法外,其余数据都已经继承过来啦).
在子类的构造器中使用:
在子类构造器第一行中会默认存在一个super(),作用是调用父类的构造器,给当前子类对象中具有父类型特征的成员变量赋值.
注意:区分this在构造器中使用
this在构造器中的作用是在同一个类中的构造器里调用另一个重构的构造器.
Java基础复习——继承机制相关推荐
- 第二十八节:Java基础-进阶继承,抽象类,接口
前言 Java基础 - 进阶继承,抽象类,接口 进阶继承 class Stu {int age = 1; } class Stuo extends Stu {int agee = 2; } class ...
- 2020604 Java基础复习
2020/6/4 Java基础复习 Java特性和优势 1.简单性: Java是在C++的语法的基础再"减减".没有头文件,没有指针,也不用分配内存,所以相对来说比较简单; 2.面 ...
- Java基础篇--继承(inherit),多态(Polymorphism)
Java基础篇--继承(inherit),多态(Polymorphism) 1. 继承概述 1.1 什么是继承 1.2 为什么要使用继承 1.3 继承的特点 1.4 继承的优点 2. 组合设计模式 2 ...
- Java基础复习(六)
Java基础复习(六) 常见关键字总结 1.final关键字 final用来修饰类.方法和变量. (1)final修饰的类不能被继承,而且final修饰的类中,所有成员方法会被默认为final方法,不 ...
- Java基础复习笔记系列 九 网络编程
Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...
- Java基础复习笔记系列 七 IO操作
Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...
- Java基础复习-常用类
Java基础复习-常用类 本文仅对学习过程中所缺java知识点的查缺补漏复习 String 代表字符串.Java程序中的所有字符串字面值(如"abc")都作为此类的实例实现. St ...
- Java基础复习巩固(一)
目录 二.Java程序设计环境 三.Java的基本程序设计结构 3.1 一个简单的java应用程序 3.2 数据类型 3.3 标识符命名规范 3.4 运算符 3.4.1 位运算符 3.4.2 数学函数 ...
- java基础复习(练习写博客)
文章目录 Java特性和优势 java三大版本 JDK.JRE.JVM(从前到后包含) Java开发环境搭建步骤 Java程序运行机制 IDE Java基础语法 一.注释.标识符.关键字 二.数据类型 ...
最新文章
- html页面如何循环遍历,遍历foreach循环中的HTML DOM元素
- Windows内存管理学习笔记(一)—— 线性地址的管理
- kafka可视化客户端工具(Kafka Tool)的基本使用
- 一天教会三岁表弟HTML,你值得拥有
- Java——集合(HashMap与Hashtable的区别)
- pandas concat_pandas-数据合并-concat(最全参数解释,含代码和实例)
- optimized mysql_MySQL解释计划中“Select tables optimized away”的含义
- UltraISO 制作ESXi 的 USB 安装盘
- 精简SQL分页语句---ROW_NUMBER
- 为什么日本人晚上那么晚去居酒屋吃炸鸡喝啤酒,但街上却鲜有胖子?
- 苹果手机显示iphone已停用连接itunes_iTunes备份道理我都懂,但我依然不想备份的?...
- linux怎么重启samba服务器,Linux系统怎么重启Samba服务
- 10个必备的AutoCAD插件
- Densepose安装教程--依据Github官方教程成功安装
- 魔兽按键精灵 V2.0(修正1)
- 一些网络广告定价模式的含义
- 快速拥有自己的博客,语雀或许是不错的选择
- 对“回调函数”的理解
- 支付宝app支付对接1
- android 微信分享 源码,记录Android微信分享功能的吐槽与思考