别样JAVA学习(五)继承上(1.0)Object类equals()
上一节继承下(一)我们进行抽象类、接口以及多态的学习。
接下来大家我们讲点特殊的东西就是object类,
我们一直在说继承,子继承了父,父还有没有父类呢,
为什么这么思考,大家想构造函数的第一行是不是都有
一个隐式的super()语句,它们是不是也都会去訪问自己的
父类呢?事实上是的。这个父类叫什么呢?
叫做Object类,传说JAVA对象中的上帝。哈哈。
1、定义
全部对象的超类。全部对象的直接后者间接父类。
肯定是全部对象都具备的功能。
随便定义一个类
class Demo{}除了隐式的构造方法,本身具备了非常多方法。
注意:
比如。因为equals()函数,JAVA觉得全部的对象都具备比較性,
都能比較两对象是否同样,能听懂吧?你仅仅要是实体,
它就能比較两对象是不是同一个地址。
equals能够比較创建的两个对象,但这么比有意义么?
2、实例
Demo里面我想建立我自己的比較方式来比較我这Demo对象的特征,
那这时候怎么做呢?你自己是不是要定义功能了啊?
比方说我Demo其中有这种动作,就是说我Demo其中封装一个数,
我想比較谁啊?我不想比較Demo对象的地址值。
我想比較的是Demo其中的这个数究竟是否同样,能够吧?
你也能够把它设为年龄。this.num=num,
那么大家我们是不是要建立一个比較行为啊?參数是谁。?Demo d
class Demo
{
private int num;
Demo(int num)
{
this.num=num;
}
public boolean compare(Demo d)
{
return this.num==d.num;
}
}
可是大家想一想我们Demo这个类是不是有equals()函数,
父类Object里面我们提供了父类比較的方法,你为什么还要又一次写?
是不是直接拿来用就可以。
我们直接复写Object中的equals()方法。
class Demo
{
private int num;
Demo(int num)
{
this.num=num;
}
public boolean equals(Object d)
{
return this.num==d.num;
}
}
可是会出现
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjMzMjU3MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
这是为什么呢?由于没有向下转型。
num属于本类成员函数。不存在于Object中。
class Demo
{
private int num;
Demo(int num)
{
this.num=num;
}
public boolean equals(Object obj)
{
Demo d=(Demo)obj; //向下转型
return this.num==d.num;
}
}
但假设传入不同对象呢?那么是不是使用instanceof
推断obj等不等于Demo就可以
class Demo
{
private int num;
Demo(int num)
{
this.num=num;
}
public boolean equals(Object obj)
{
if(!(obj instanceof Demo))
return false;
Demo d=(Demo)obj; //向下转型
return this.num==d.num;
}
}
总的来说,
Object中的equals()这方法默认比較两个对象是否相等,
但是比較对象相等是不是意义不太大,因此我们建立
对象自身特有内容的比較方式,怎么办?复写。
由于父类中已经定义好,可是别忘了假设你用到了对象中特有的数据
要对对象进行推断和转换。以上就是Object中的equals()方法特点。
别样JAVA学习(五)继承上(1.0)Object类equals()的更多相关文章
- 别样JAVA学习(五)继承上(1.1)Object类toString()
接下来说完equals以后,我们学习接下来的toString(), Java又觉得全部对象不光具有比較性, 还能使对象变成字符串被打印. 出现 曾经前面显示的是数组.如今显示的是这个对象所属的类. 紧 ...
- Java 面向对象概述原理: 多态、Object类,转型(8)
Java 面向对象概述原理: 多态.Object类,转型(8) http://docs.oracle.com/javase/tutorial/java/IandI/override.html Java ...
- 面向对象编程(九)——面向对象三大特性之继承以及重写、Object类的介绍
面向对象三大特性 面向对象三大特征:继承 :封装/隐藏 :多态(为了适应需求的多种变化,使代码变得更加通用!) 封装:主要实现了隐藏细节,对用户提供访问接口,无需关心方法的具体实现. 继承:很好的实现 ...
- Java学习笔记--继承和多态(上)
1.通过继承来开发超类(superclass) 2.使用super 关键词唤起超类的构造方法 3.在超类中覆盖方法 4.区分override和overload 5.在Object类中探索toStrin ...
- Java学习笔记---继承和super的用法
自从换了个视频教学,感觉比原来那个好多了,就是学校网速太渣,好多视频看一会卡半天,只能先看看已经下载的了. 不过也好,虽然不能从开始开始重新开,但是已经看过一次,在看一次也是好的,就当巩固学习了. 继 ...
- Java学习笔记--继承和多态(下)
1.通过继承来开发超类(superclass) 2.使用super 关键词唤起超类的构造方法 3.在超类中覆盖方法 4.区分override和overload 5.在Object类中探索toStrin ...
- Java学习笔记--继承和多态(中)
1.通过继承来开发超类(superclass) 2.使用super 关键词唤起超类的构造方法 3.在超类中覆盖方法 4.区分override和overload 5.在Object类中探索toStrin ...
- java学习记录笔记--继承,super,Object类
继承: Java中的继承是单继承的. 1.子类拥有父类的全部属性和方法. 可是属性和方法的修饰符不能使private. 2.能够复用父类的代码. 方法的重写须要满足的条件: a.返回值类型 b.方法名 ...
- Java学习从菜鸟变大鸟之一 hashCode()和equals()的本质区别和联系
在学习java,根据视频做实例的过程中,对equals和hashcode两个方法理解稍微深刻一点,主要是它们两个很容易混淆,容易出错,自己又通过网上的资料学习,和大家分享 equals()方法 equ ...
随机推荐
- InsertOnSubmit、InsertAllOnSubmit等区别 (转)
a. InsertOnSubmit: 将一个实体添加到datacontext对象中,并在SubmitChange()的时候执行更改. b. InsertAllOnSubmit:将一个实体集合添加到da ...
- 用Delphi实现Windows的鼠标钩子函数
Delphi是基于PASCAL语言的Windows编程工具,功能十分强大.然而在Delphi的帮助文件中,对Windows API函数的说明沿袭了 VC 的格式,和VC一样,对很多API函数的用法没有 ...
- WordPress的用户系统总结
原文发表自我的个人主页,欢迎大家訪问~转载请保留本段,或注明原文链接:http://www.hainter.com/wordpress-user-module keyword:WordPress,用户 ...
- JSP自定义标签——简单标签(1)
前面一篇博客介绍了自定义标签的传统标签使用方式,但是我们会发现,使用传统标签非常的麻烦,而且接口还多,现在传统标签基本都没用了,除了一些比较久的框架.Sun公司之后推出了一个新的标签使用方式,称之为简 ...
- greatis很不错,出售源代码
http://www.greatis.com/delphicb/ 特别是: http://www.greatis.com/delphicb/imgedit/
- Window7下安装openssl完整版(亲测实现)
安装环境: 操作系统:window7(64位) C++编译器:VS2010 -------------------------------------------------------------- ...
- 记一个手游app数据文件的破解
出于一些非常猥琐的须要,同一时候自己也想做一些新奇的尝试,周末用了大半天时间破解了某款手游的数据文件. 过程比我预想的要顺利,主要原因还是我们开发者的懈怠.咳咳. 步骤例如以下: 下载安装包,解压,发 ...
- VC中添加web控件的方法
在VC中使用WebBrowser控件的两方法 黄森堂(vcmfc)著 ClassWizard方式: 1.创建包装类:View->ClassWizard->Add Class->For ...
- dm642在线写EPROM.txt
void wirteEPROM() { //#include <stdio.h> unsigned short bufeprom[30],i,val; FILE *fp; ...
- FOJ 2170 花生的序列 dp
题目链接:http://acm.fzu.edu.cn/problem.php? pid=2170 贴个baka爷的代码留念.. 数据出的有问题.输入的字符串长度不超过1000 #include< ...