第五章简易笔记

第五章-继承

1. 继承已存在的类就是复用(继承)这些类的方法和域。在此基础上,还可以添加一些新的方法和域,以满足新的需求。

2.反射是指在程序运行期间发现更多的类及其属性的能力。

3.在java中所有继承都是公有继承。

4. 在子类中可以增加域、增加方法或覆盖超类的方法,然而绝对不能删除继承的任何域和方法。

5.this与super关键字用途总结:

this用途:

(1)引用隐式参数;

(2)调用该类其他的构造器。

super用途:

(1)调用超类方法;

(2)调用超类构造器。

6.调用构造器的语句只能作为另一个构造器的第一条语句出现。构造器参数既可以传递给本类(this)的其他构造器,也可以传递给超类(super)的构造器。

7.一个对象变量可以指示多种实例类型的现象被称为多态,在运行时能够自动的选择调用哪个方法的现象称为动态绑定。

8.java不支持多继承。

9.在java中,对象变量是多态的。一个Employee变量既可以引用一个Employee类对象,也可以引用一个Employee类的任何一个子类对象。

10.不能将超类的引用赋给子类对象。例如:Manager  m = staff[i];//error

原因:不是所有的雇员都是经理。

11. 动态绑定(弄清对象的执行过程):

1) 编译器查看对象的声明类型和方法名。编译器将会一一列举所有该类中的该方法和其超类中访问属性为public且方法名与之一致的方法。

2)变奇艺查看调用方法时提供的参数类型。如果存在一个方法名相同且所提供的参数类型完全匹配,就选择这个方法,这个过程叫做重载解析。

12. 如果子类定义了一个与超类签名相同的方法,那么子类中的这个方法就覆盖了超类中的这个相同签名的方法。在覆盖方法时,一定要保证返回类型的兼容性。允许子类将覆盖方法的类型定义为原返回类型的子类。

13. 在覆盖一个方法时,子类方法不能低于超类方法的可见性。如果超类方法时public,那么子类方法一定要声明为public。

14. 进行类型转换的唯一原因:在暂时忽视对象的实际类型之后,使用对象的全部功能。

15. 在Java中,每个对象变量都属于一个类型。类型描述了这个变量所引用的以及能够引用的对象类型。

16. 将一个子类的引用赋值给一个超类变量,编译器是允许的。但将一个超类的引用赋值给一个子类变量,必须进行类型转换。这样才能通过运行时检查。

综上:

1)只能在继承层次内进行类型转换。

2)在将超类转换成子类型之前,应该使用instanceof进行检查。在一般情况下,应该尽量少用类型转化和instanceof运算符。

if(staff[1]   instanceof  Manager){

boss  = (Manager) staff[1];

......

}

17. 包含一个或多个抽象方法的类必须声明为抽象的。除此,抽象类还可以包含具体数据和具体方法。抽象方法充当着占位的角色,他们的具体实现在子类中。

18.  扩展抽象类的两种方法:

1)在子类中定义部分抽象方法或抽象方法也不定义,这样必须将子类也标记为抽象类;

2)定义全部的抽象方法,这样,子类就不是抽象的了。

19. 类即使不含抽象方法,也可以将类声明为抽象类。抽象类不能被实例化(不能创建它的对象,但可以定义一个抽象类的对象变量,但是它只能引用非抽象子类的对象)。

20. Java用于控制可见性的四个访问修饰符:

1) 仅对本类可见------private;

2) 对所有类可见 ------ public;

3) 对本包和所有子类可见 ------ protected;

4) 对本包可见 ------ 默认,不需要修饰符。

21. 可以使用Object类型的变量引用任何类型的对象。当然,Object类型的变量只能用于作为各种值的通用持有者。

22.
在Java中,只有基本类型(例如:数值、字符和布尔类型)不是对象。所有的数组类型,不管是对象数组还是基本类型的数组都扩展与Object类。

23.
Object类中的equals方法用于检测一个对象是否等于另外一个对象。在Object类中,这个方法将判断两个对象是否具有相同的引用。如果两个对象具有相同的引用,他们一定是相等的。然而经常检验两个对象状态的相等性,如果两个对象的状态相等,就认为这两个对象是相等的。

24. 强烈建议为自定义的每一个类增加toString方法。

25. 泛型数组列表:

ArrayList是一个采用类型参数的泛型类。为了指定参数列表保存的元素对象类型,需要用一对尖括号括起来加在后面。具有自动调节数组容量的功能,而不需为此编写任何代码。可以使用add方法将元素添加到数组列表中。

26. 数组列表的操作魅力: 如果调用add且内部数组已经满了,数组列表就将自动地创建一个更大的数组,并将所有的对象从较小的数组中拷贝到较大的数组中。

27. 数组列表的容量与数组的大小有一个非常重要的区别:容量为100个元素的数组列表只是拥有保存100个元素的潜力,单数在最初甚至完成初始化构造后,数组列表根本就不含任何元素。

28. 对象包装器类是不可变的,即一旦构造了包装器,就不允许更改包装在其中的值。同时,包装器还是final的,不能定义他们的子类。

29. 如果想定义一个整型数组列表,而尖括号中的类型参数不允许是基本类型。

30. 在比较两个枚举类型的值时,永远不要使用equals,而是直接使用“==”就可以了。

31. 能够分析类能力的程序称为反射。反射机制的功能极其强大。反射机制可以用来:

1)在运行时分析类的能力。

2)在运行中查看对象,例如,编写一个toString方法供所有类使用。

3)实现通用的数组操作代码。

4)利用Method对象,这个对象很像C++中的函数指针。

32. 在程序运行期间,Java运行时系统始终为所有的对象维护一个被称为运行时的类型标识。这个信息跟踪着每一个对象所属的类。虚拟机利用运行时类型信息选择相应的方法执行。保存这个信息的类被称为Class。

33. 继承设计的技巧:

(1)将公有操作和域放在超类。

(2)不要使用受保护的域。

(3)使用继承实现is-a 的关系。

(4)除非所有继承的方法都有意义,否则不要使用继承。

(5)在覆盖方法时,不要改变预期行为。

(6)使用多态,而非类型信息。

(7)不要过多的使用反射。

时间: 2024-08-06 15:42:22

第五章简易笔记的相关文章

Android深度探索——第五章读书笔记及心得

搭建S3C6410开发板的测试环境 ——第五章读书笔记及心得 通过本章的学习学会了如何在开发板上安装Android.开发板是学习和开发嵌入式技术的主要硬件设备,想要顺利的通过linux驱动访问硬件,是不能在PC板上模拟的,需要在卡发板上进行调试和测试.其相对于手机更适合与对程序进行测试,尤其是对底层linux程序进行测试.还了解了S3C6410开发板的基本信息.知道了如何安装串口调试工具以及烧写Android系统.知道了如何配置有线网络. S3C6410是一款低功耗.高性价比的精简指令集计算机处

安卓权威编程指南 - 第五章学习笔记(两个Activity)

学习安卓编程权威指南第五章的时候自己写了个简单的Demo来加深理解两个Activity互相传递数据的问题,然后将自己的学习笔记贴上来,如有错误还请指正. IntentActivityDemo学习笔记 题目:ActivityA登录界面(用户名.密码.登陆按钮),ActivityB(Edit,返回按键:SubmitButton).A界面输入用户名和密码传到B中,B验证用户输入的用户名和密码,如果错误就返回A,并用Toast 显示用户名和密码错误:如果正确,就在第二个 activity中显示一个Edi

JavaScript高级程序设计(第3版)第五章读书笔记

第五章 引用类型 创建Object实例的方式有两种,第一种是使用new操作符后跟Object构造函数,例如: var person = new Object( ); person.name = “Nicholas”; person.age=29; 第二种是使用对象字面量表示法.如: var person = { name : “Nicholas”, age : 29 }; 在最后一个属性后面添加逗号,会在IE7及更早版本和Opera中导致错误. 两种访问对象属性的方法,一是方括号语法,例如per

大道至简第五章阅读笔记

这次第五章的内容谈到了工程的实质内容,那就是做工程做项目的过程.在一个项目中,理解了客户的需求之后就该分析具体的实施计划,很多人总是会做瀑布模型然后按照模型的样子去做完过程的每一个阶段,但是每个阶段又是做过场一样,说起来是有这个步骤,有这一项的规划,但真正的实质内容并没有多少,这样的过场真的是没有什么意义,只是空有其表罢了,做一个项目,我们面对的的客户,我们在最后是要把成型的,有用的,能达到客户要求的项目拿出来的,所以说实现才是我们最终的目的,无论我们要做的是一个小的工具还是一个大的项目,做工程

Android深度探索--HAL与驱动开发----第五章读书笔记

第五章主要学习了搭建S3C6410开发板的测试环境.首先要了解到S3C6410是一款低功耗.高性价比的RISC处理器它是基于ARMI1内核,广泛应用于移动电话和通用处理等领域. 开发板从技术上说与我们经常用的手机类似, 也包含显示屏. 键盘. Wi-Fi. 蓝牙等模块(可 能有的是选配〉.但与手机不同的是在开发板上安装嵌入式系统要比手机容易得多.而且一般开发 扳都有很多扩展的端口,可以很容易开发定制的硬件, 并与开发板链接.因此,开发板相对于孚机 来说,更适合对程序进行测试,尤其适合对底层的 L

《Linux内核设计与实现》第五章学习笔记

第五章 系统调用 操作系统中,内核提供了用户进程与内核进行交互的一组接口.这些接口让应用程序受限的访问硬件设备,提供了新进程与已有进程进行通信的机制,也提供了申请操作系统其他资源的能力.提供接口主要是为了保证系统稳定可靠,避免应用程序恣意妄行. 课堂知识点回顾 1. 系统调用:需要int 0x80模拟中断让硬件触发.同步.主动地进入系统空间. 2. 硬中断:异步.被动地进入系统空间.CPU运行时发生错误则中断,中断后没有进程调度. 3. 软中断:中断后还执行其他进程调度. 4. 系统调用过程:

Thinking In Java第五章学习笔记

第五章:初始化与清理 初始化和清理是涉及程序安全的两个问题.Java构造器用于新建对象时的初始化,而垃圾回收器则进行清理. 构造器的名称必须与类名一样,虽然构造器是一种特殊的方法,但是每个方法首字母小写的编码风格并不适合用于构造器. 构造器是没有返回值的,但是new表达式却返回了对新建对象的引用. 方法重载是构造器所必须的.每个重载方法都必须独一无二的参数列表.甚至参数顺序的不同,也足以区分两个方法.不过一般不建议这么做,因为这会使代码难以维护.当传入的数据类型小于方法中声明的形式参数类型,实际

android驱动开发第五章心得笔记

主要讲解的内容是是搭建开发板S3C6410的测试环境. S3C64103C6410是一个16/32位RISC微处理器,旨在提供一个具有成本效益.功耗低,性能高的应用处理器解决方案,像移动电话和一般的应用.它为2.5G 和 3G通信服务提供优化的H /W性能, S3C6410采用了64/32位内部总线架构. 同时还学习到了串口调试工具,minicom. 第一步: ls | greb usbserial 检测当前系统是否支持USB转串口 第二步: apt—get install minicom 安装

《Java从入门到精通》第五章学习笔记

第5章 数组 一.一维数组 1.创建 一维数组实质上是一组相同类型数据的集合,在Java中数组不属于数据类型,而是一种对象. 数组的两种声明方式: int[] arr1;int arr2[]; 数组声明之后,在使用之前还需要先分配内存空间: arr1=new int[3];  //数组元素个数为3,即长度为3:arr2=new int[2]; 声明和分配空间也可以一并操作: int arr1[]=new int[3];int arr2[]=new int[2]; 元素赋值的两种方法: arr1[