首页 > 编程语言 > 详细

【自学java笔记#第二十二天#】奇奇怪怪的知识点增加了

时间:2020-03-27 22:29:18      阅读:69      评论:0      收藏:0      [点我收藏+]

选用教材:《Java核心技术卷一》

第五章 继承

一、两种绑定方式

1、静态绑定:对于private方法、static方法和final方法使用得比较多。

2、静态绑定:对于public方法使用得比较多。

个人理解是:那些可见性更大的方法也就存在着被更多次访问的可能,访问这些方法的对象也许来自不同的类,所以选用动态绑定就能更好地避免异常的产生。

二、抽象类和final类

抽象类关键字:abstract;final类关键字:final。

1、不同点1:包含有抽象方法的类,必须声明为抽象类;包含有final方法的类,不必被声明为final类。

2、不同点2:抽象类包含的方法不一定是抽象方法;final类包含的方法一定是final方法。

3、不同点3:抽象类不能被实例化,但可以扩展;final类可以被实例化,但不能扩展。

4、不同点4:抽象类对象只能引用非抽象子类的对象;final类对象可以引用任何可见的对象。

三、继承关系中的强制类型转换

1、超类变量←(赋值)子类对象引用 

2、子类变量←(赋值)超类对象引用

第一种操作无需进行强制类型转换,第二种操作则需要进行强制类型转换。

超类和子类对象的引用赋值,可以参考基本数据类型的相关操作:

继承层次更高的子类相当于byte类型,继承层次更低的父类相当于int类型。

子类(byte)可以无损地转换到父类(int);父类(int)需要强制类型转换到子类(byte)。

四、超类的equals方法

用于检测一个对象是否等于另一个对象。

1、基本数据类型:用==判断。

2、对象引用类型:用equals方法判断,参与比较的对象所有的状态都相同,才能说这些对象是相等的。

3、如何编写一个完美的equals方法:

①显式参数命名为otherObject;

②检测this与otherObject是否相等:if(this==otherObject) return true;

③检测otherObject是否为null:if(otherObject==null) return false;

④比较this与otherObject的类:

所有子类都具有相同的相等性语义:

if(!(otherObject instance of ClassName)) return false;

所有子类具有不同的相等性语义:

if(getClass()!=otherObject.getClass()) return false;

⑤将otherObject强制转换为相应类类型的变量:

ClassName other=(ClassName) otherObject;

⑥根据相等性概念的要求来比较字段:

若所有字段都匹配,就返回true;否则,返回false。

return field1==other.field1

&& objects.equals(field2,other.field2)     //没有分号

&&.........;        //最后才有分号

五、数组与数组列表的区别

1、访问元素

数组:a[i]=1;

数组列表:a.set(i,harry);   //将下标为i的数组列表元素设置为Harry

2、获取元素

数组:Employee e=a[i];

数组列表:Employee e=a.get(i);     //得到下标为i的数组列表元素值

3、数组的大小与容量的区别

数组的大小X是指:某个特定的数组/数组列表共有X个位置可以使用。未放置元素的位置,会用0、false或者null填满;

数组的容量Y是指:该数组/数组列表可以放Y个元素,但是没放满的地方也就这么空着,系统不会自动填满;当然,当放在数组列表里的元素超过了Y这个数时,数组列表还会自动再开辟一块新的地方出来存放元素。

【自学java笔记#第二十二天#】奇奇怪怪的知识点增加了

原文:https://www.cnblogs.com/yizhinailu/p/12584419.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!