Java核心第五章继承
5.1类 超类(父类、基类) 子类(派生类)
使用关键字extends来继承
对于子类想访问父类的私有域,则必须要借助公有接口,在父类中的公有方法正是这样的接口
为了防止子类定义了与父类一样的成员函数,则可以使用特定关键字super来解决:
super.父类的成员函数 super与引用的概念不同 ,它只是一个指示编译器调用超类方法的特殊关键字,并不能将super赋给另一个对象变量
在子类中可以增加域 增加方法 或者覆盖超类的方法,然而绝对不能删除继承的任何域和方法
一个对象变量可以指示多种实际类型的现象被称为多态,在运行时能够自动选择调用哪个方法的现象称为动态绑定。
5.1.1继承层次
继承并不仅限于一个层次。由一个公共超类派生出来的所有类的集合被称为继承层次。在继承层次中,从某个特定的类到其祖先的路径被称为该类的继承链
5.1.2多态
判断是否应该设计为继承关系的规则即“is-a”规则,它表明子类的每个对象也是超类的对象。
5.1.3动态绑定
当程序运行时且采用动态绑定调用方法时虚拟机一定会调用与x所引用对象的实际类型最合适的那个类的方法,并且一层一层向上找
5.1.4阻止继承 :final类和方法
5.1.6抽象类
抽象的父类需要包含抽象的方法。在父类中实现多个子类的共有属性
抽象方法的具体实现在子类中。扩展抽象类有两种选择:
1在子类中定于部分抽象方法或者抽象方法也不定义,这样就必须将子类也标记为抽象类;
另外一种方法是定义全部的抽象方法,这样子类就不是抽象的了。
抽象类不能被实例化,如果将一个类声明为abstract,就不能创建这个类的对象;但是可以创建一个具体子类的对象;
注意:可以定义一个抽象类的对象变量,但是它只能引用非抽象子类的对象。
5.1.7受保护访问:
超类中的某些方法允许被子类访问,或允许子类的方法访问超类的某个域,为此需要将这些方法或者域声明为protected。
5.2object所有类的超类
Java中,每个类都是有Object类扩展而来的。
可以使用Object类型的变量引用任何类型的对象。Object e=(Employee)obj;
5.2.1 equals方法
检测一个对象是否等于另一个对象
5.3泛型数组列表
在Java中,它允许在运行时确定数组的大小。即使用Java中另一个数组被称为ArrayList的类。它使用起来有点像数组,但是在添加或者删除元素时,具有自动调节数组容量的功能,而不需要为此编写任何代码.
ArrayList是一个采用类型参数的泛型类。为了指定数组列表保存的元素对象类型,需要用一对尖括号将类名括起来加在后面。
下面构造一个保存Employee对象的数组列表:
ArrayList<Employee>staff=new ArrayList<Employee>(); 这被称为菱形语法。
使用add方法将元素添加在数组列表中。如果调用add且内部数组已经满了,数组列表就将会自动创建一个更大的数组,并将所有的对象从较小的数组中拷贝到较大的数组中。
如果已经清楚或能够估计出数组可能存储的元素数量,就可以在填充数组之前调用ensureCapacity方法:staff.ensureCapacity(100);这个方法调用将分配一个包哈100个对象的内部数组。然后调用100次add,而不要重新分配空间。
size方法将返回数组列表中包含的实际元素数目staff.size();将返回staff数组元素列表的当前元素数量,它等价与数组a的a.length()。
一旦能够确认数组列表的大小不再发生变化,就可以调用trimTosize方法。这个方法将存储区域的大小调整为当前元素数量所需压迫的存储空间数据,垃圾回收期将回收多余的存储空间。
一旦整理了数组列表的大小,添加新元素就需要花费时间再次移动存储块,所以应该在确认不会添加任何元素时,再调用trimToSize.
下面这个技巧可以一举两得,即可以灵活的扩充数组又可以方便的访问数组元素
首先创建一个数组,并且添加所有元素
将Employee【】数组替换成了ArrayList<Employee>注意变化
1不必指出数组的大小
2使用add将任意多的元素添加到数组中。
3使用size()替代length计算元素的数目
4使用a.get(i)替代a【i】访问元素
5.4对象包装器与自动装箱
所有的基本类型都有一个与之对应的类,这些类称为包装器,这些包装器类拥有很鲜明的名字,Integer Long Float Double Short Byte Character Void Boolean。
对象包装器是不可变的,一旦构造了包装器,就不允许更改包装在其中的值。
声明一个Integer对象的数组列表
ArrayList<Interger>List=new ArrayList<>();
并使用add()方法进行自动装箱;而当一个Integer对象赋给一个int值时将会自动的拆箱。
Java核心第五章继承的更多相关文章
- Java核心技术第五章——1.类、超类、子类(2)
继上一篇Java核心技术第五章——1.类.超类.子类(1) 6.重载解析 假如调用ClassName.Method(args) 1.编译器列出类ClassName所有名为Method的方法. 2.编译 ...
- “全栈2019”Java多线程第五章:线程睡眠sleep()方法详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- “全栈2019”Java异常第五章:一定会被执行的finally代码块
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...
- “全栈2019”Java第九十五章:方法中可以定义静态局部内部类吗?
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第十五章:Unicode与转义字符
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第二十五章:流程控制语句中循环语句while
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Think in Java 第四 五 章
Think in Java 第四章 控制执行流程 测试while public class whileTest { static boolean condition(){ boolean result ...
- JAVA基础第五章-集合框架Map篇
业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...
- [core java学习笔记][第五章继承]
5.1 类.超类和子类 定义 class Manager extends Employee { 添加方法和域 } 权限 派生类不能使用基类的私有变量 派生类调用基类的方法 利用super这个关键词 s ...
随机推荐
- js中错误处理机制
1.基本知识 1. 错误对象 Error,SyntaxError,RangeError, ReferenceError,TypeError,URIError 上面的都是构造函数: new 命令可以生成 ...
- mysql日志文件路径
SHOW VARIABLES LIKE 'general_log_file';日志文件路径SHOW VARIABLES LIKE 'log_error';错误日志文件路径SHOW VARIABLES ...
- kindeditor实现ctrl+v粘贴word图片并上传
Chrome+IE默认支持粘贴剪切板中的图片,但是我要发布的文章存在word里面,图片多达数十张,我总不能一张一张复制吧?Chrome高版本提供了可以将单张图片转换在BASE64字符串的功能.但是无法 ...
- poj 2762
Tarjan + TopsortTarjan 缩点Topsort 判断 Topsort 判断:在DAG中若初始状态下存在多于1个入度为0的点则说明这些 入度为0的点之间不会有路径可达若不存在入度为0的 ...
- [Codevs] 矩形面积求并
http://codevs.cn/problem/3044/ 线段树扫描线矩形面积求并 基本思路就是将每个矩形的长(平行于x轴的边)投影到线段树上 下边+1,上边-1: 然后根据线段树的权值和与相邻两 ...
- iOS测试-如何指标量化app耗电量和性能XCTest Metrics
对于app端的专项测试,Android端我们可以用adb或者一些三方工具进行(例如itest)进行实时的性能监控,iOS端的话也可以用用一些三方的工具,但是需要嵌入到我们的项目当中,今天来介绍下Xco ...
- Java Collection Framework 备忘点
最顶端是两个接口,集合和映射—— Collection<T> / Map<K, V> List 列表 保持插入顺序 ArrayList 擅长随机读 LinkedList ...
- idea中,springboot的热部署
1.开启idea的自动编译(静态) 具体步骤:打开顶部工具栏File | Settings | Build, Execution, Deployment | Compiler 然后勾选 Build p ...
- Atcoder ABC 139A
Atcoder ABC 139A 题意: 给你两个字符串,记录对应位置字符相同的个数 $ (n=3) $ 解法: 暴力枚举. CODE: #include<iostream> #inclu ...
- 5.4.1 sequenceFile读写文件、记录边界、同步点、压缩排序、格式
5.4.1 sequenceFile读写文件.记录边界.同步点.压缩排序.格式 HDFS和MapReduce是针对大文件优化的存储文本记录,不适合二进制类型的数据.SequenceFile作 ...