java OOP第03章_继承、抽象类和抽象方法
一、 为什么需要继承:
若多个类中都需要一些属性和方法,那么就可以将属性和方法抽取到一个父类中,需要的子类可以通过extends关键字去继承这个父类后拥有相应的属性和方法。
类、数组、方法----引用数据类型
二、 继承的流程:
1、 编写父类:Animal
2、 编写子类:Dog、Cat、Pig
3、 在子类中通过extends关键字去继承父类:
三、 继承的注意事项:
1. 父类中的属性和方法只有使用protected、public修饰的才能被子类继承。
2. 当编写一个类时,若使用了extends关键字继承某个父类,该父类就是当前类的直接父类;
若没有使用extends关键字继承某个父类,系统会自动继承object类,object就是该类的直接父类;所有类都会直接或间接继承object类。
3. 子类继承父类后,只要父类是使用protected、public修饰的方法都能被子类继承,若子类对父类的方法不满意可以通过@Override标识重写父类的方法。
4. 子类中重写父类方法,子类中的方法访问(范围)修饰符只能是与父类相同或更大,而不能比父类的修饰符更小。
5. Java是一个单继承的开发语言,即一个类只能继承一个父类,但是可以实现多个接口。
6. Final修饰的类是终态类,是不能被其他类继承的;final修饰的方法是终态方法,是不能被子类重写(覆盖)。
四、 继承后的初始化流程:
1. 初始化父类的属性:
2. 初始化父类的静态代码块:
3. 初始化子类的属性:
4. 初始化子类的静态代码块:
5. 初始化父类的构造方法:
6. 初始化子类的构造方法:
7. 初始化子类或父类的实例方法:
五、 Super关键字:
Super是“超级,父类”的意思,通过该关键字可以去访问父类中的资源(属性、构造方法、实例方法)。
1. Super访问父类的属性:
格式:super.属性名
举例:super.name
2. Super访问父类的实例方法:
格式:super.方法名()
举例:super.publicMethod()
3. Super访问父类的构造方法:
Super();
注意:
1) 只能在子类的构造方法中调用父类的构造方法,而不能在实例方法中调用父类的构造方法。
2) 调用父类构造方法的语句之前不能有其他语句。注释除外
3) This();调用自己类的构造方法;在一个构造方法中调用另一个构造方法,调用构造方法的语句前不能有其他语句。
六、 抽象方法和抽象类:
1. 抽象方法:
Java当中的方法有两个部分构成:定义和实现,既有定义部分和实现部分的方法称为实现了的方法;
只有定义部分而没有实现部分的方法称为抽象方法,抽象方法需要使用abstract关键字修饰,{}用;代替。
2. 抽象类:
一个类中若包含了抽象方法,那么这个类就必须使用abstract修饰符将他声明为抽象类;抽象类中可以包含抽象方法、实例方法。也可以没有抽象方法。
3. 抽象类的注意事项:
1) 抽象类和接口都是不能被实例化的,即不能创建抽象类和接口的对象。
2) 一个类若继承了一个抽象类或实现接口,该类有两种选择,要么将自己声明为抽象类,要么实现所有的抽象方法。
java OOP第03章_继承、抽象类和抽象方法的更多相关文章
- Java oop 第13章_多线程
第13章_多线程 一. 多线程相关的概念: 程序:由某种编程语言开发可执行某些功能的代码组合,它是静态的概念. 进程:当程序被执行时的过程可以理解为讲程序从外存调入内存的过程,会为每一个程序 ...
- java oop第07章_集合框架
一. 什么是集合: 在Java中提供了一些可以保存同一数据类型的数据集称为集合,就是规定了一些集合的规范(接口.抽象类.实现类)及方法, 方便我们程序在保存数据时进行增.删.改.查操作,编程更加高效. ...
- java oop第06章_异常处理
一. 异常的概念: 若程序都按我们事先设定的计划运行为正常执行,但通常会出现我们事先预料之外的其他情况,称为程序发生异常, 在java中会对一些可能出现异常的代码进行分类,达到尽量对可能发生的异常进行 ...
- Java oop第05章_多态、接口
一. 为什么需要接口? Java中当一个类继承父类时,最多也只能继承一个父类,扩展性会受到一定的限制,为了弥补这一缺陷,Java又提供了一种新的引用数据类型分类,叫接口. 一个类只能继承一个父类,但可 ...
- java oop第11章_反射、BaseDao的进一步改造
引言:从Java5开始,Java中引用了一个新的概念反射,当程序运行时,能动态感知到程序中拥有的所以信息,这个获取信息的过程是采用反射机制来完成. 一. Class类: Class类用 ...
- “全栈2019”Java第五十一章:继承与final关键字详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第四十七章:继承与方法
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 第03章_基本的SELECT语句
第03章_基本的SELECT语句 1. SQL概述 1.1 SQL背景知识 1946 年,世界上第一台电脑诞生,如今,借由这台电脑发展起来的互联网已经自成江湖.在这几十年里,无数的技术.产业在这片江湖 ...
- Java OOP——第四章 异常
1. 接口:接口就是给出一些没有内容的方法,封装到一起,到某个类要使用的时候,在根据具体情况把这些方法写出来. 接口是更加抽象的抽象的类, 抽象类里的方法可以有方法体, 接口里的所有方法都没有方法体. ...
随机推荐
- LeetCode 分隔链表
题目链接:https://leetcode-cn.com/problems/partition-list/ 题目大意 略. 分析 空间复杂度 O(1) 的做法蛮有意思的,另外加头结点可以少写很多代码. ...
- 剑指offer——68队列的最大值
题目描述 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值.例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6 ...
- 使用Swagger2Markup归档swagger生成的API文档
文章出处: http://blog.didispace.com/swagger2markup-asciidoc/ 说明 项目中使用Swagger之后,我们能够很轻松的管理API文档,并非常简单的模拟接 ...
- json传参报错
restful接口报错: com.fasterxml.jackson.core.JsonParseException: Unexpected character ('e' (code 101)): w ...
- 关于redis闪退的案例
我需要恢复之前备份的文件:dump.rdb,文件大小2.2G 于是将dump.rdb放在redis的安装目录下,然后启动redis. ./redis-server redis.conf 然后我在另一个 ...
- 自动生成web api接口文档
然后打开web程序,访问ip:port/Help. 为什么可以直接输入Help就能访问呢,因为这个插件本身已经配置了路径,如下. public class HelpPageAreaRegistrati ...
- Django-ORM初识
Django之ORM基础 一.ORM简介: ORM概念: 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术 ...
- leetcood学习笔记-257-二叉树的所有路径
题目描述: 第一次提交:参考113-路径总和② class Solution: def binaryTreePaths(self, root: TreeNode) -> List[str]: r ...
- delphi xe10 手机程序事件服务操作、退出键操作
//程序事件服务操作 var FMXApplicationEventService: IFMXApplicationEventService; begin if TPlatformServices.C ...
- 移动Windows开始按钮到任务栏中的任何位置
uses CommCtrl; procedure TForm1.Button1Click(Sender: TObject); var vHandle: THandle; vCount: Integer ...