上一节继承下(一)我们进行抽象类、接口以及多态的学习。

接下来大家我们讲点特殊的东西就是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()的更多相关文章

  1. 别样JAVA学习(五)继承上(1.1)Object类toString()

    接下来说完equals以后,我们学习接下来的toString(), Java又觉得全部对象不光具有比較性, 还能使对象变成字符串被打印. 出现 曾经前面显示的是数组.如今显示的是这个对象所属的类. 紧 ...

  2. Java 面向对象概述原理: 多态、Object类,转型(8)

    Java 面向对象概述原理: 多态.Object类,转型(8) http://docs.oracle.com/javase/tutorial/java/IandI/override.html Java ...

  3. 面向对象编程(九)——面向对象三大特性之继承以及重写、Object类的介绍

    面向对象三大特性 面向对象三大特征:继承 :封装/隐藏 :多态(为了适应需求的多种变化,使代码变得更加通用!) 封装:主要实现了隐藏细节,对用户提供访问接口,无需关心方法的具体实现. 继承:很好的实现 ...

  4. Java学习笔记--继承和多态(上)

    1.通过继承来开发超类(superclass) 2.使用super 关键词唤起超类的构造方法 3.在超类中覆盖方法 4.区分override和overload 5.在Object类中探索toStrin ...

  5. Java学习笔记---继承和super的用法

    自从换了个视频教学,感觉比原来那个好多了,就是学校网速太渣,好多视频看一会卡半天,只能先看看已经下载的了. 不过也好,虽然不能从开始开始重新开,但是已经看过一次,在看一次也是好的,就当巩固学习了. 继 ...

  6. Java学习笔记--继承和多态(下)

    1.通过继承来开发超类(superclass) 2.使用super 关键词唤起超类的构造方法 3.在超类中覆盖方法 4.区分override和overload 5.在Object类中探索toStrin ...

  7. Java学习笔记--继承和多态(中)

    1.通过继承来开发超类(superclass) 2.使用super 关键词唤起超类的构造方法 3.在超类中覆盖方法 4.区分override和overload 5.在Object类中探索toStrin ...

  8. java学习记录笔记--继承,super,Object类

    继承: Java中的继承是单继承的. 1.子类拥有父类的全部属性和方法. 可是属性和方法的修饰符不能使private. 2.能够复用父类的代码. 方法的重写须要满足的条件: a.返回值类型 b.方法名 ...

  9. Java学习从菜鸟变大鸟之一 hashCode()和equals()的本质区别和联系

    在学习java,根据视频做实例的过程中,对equals和hashcode两个方法理解稍微深刻一点,主要是它们两个很容易混淆,容易出错,自己又通过网上的资料学习,和大家分享 equals()方法 equ ...

随机推荐

  1. 初入Android--环境搭建

    Android SDK 可以下载adt-bundle:包含了装好插件的eclipse和android sdk.下载好后,首先设置ANDROID_HOME环境变量:ANDROID_HOME=/home/ ...

  2. Android来电监听

    本文实现来电自动接听,自动录音,自动回拨功能. public class MainActivity extends Activity { @Override protected void onCrea ...

  3. [置顶] 用mootools实现checkbox全选功能

    全选时,所有的单个checkbox都要选中,反过来也可以实现 //全选按钮 $('chkall').addEvent('click',function(){ $$('input[name=" ...

  4. (android高仿系列)今日头条 --新闻阅读器 (三) 完结 、总结 篇

    从写第一篇今日头条高仿系列开始,到现在已经过去了1个多月了,其实大体都做好了,就是迟迟没有放出来,因为我觉得,做这个东西也是有个过程的,我想把这个模仿中一步一步学习的过程,按照自己的思路写下来,在根据 ...

  5. SqlServer中的数据类型UniqueIdentifier

    SqlServer中的数据类型UniqueIdentifier究竟是什么东东? 该类型一般用来做为主键使用,可用SQL语法的newid()来生成一个唯一的值.我想请问的是,这个值是一个长整型的数据值呢 ...

  6. Spark Sreaming与MLlib机器学习

    Spark Sreaming与MLlib机器学习 本来这篇是准备5.15更的,但是上周一直在忙签证和工作的事,没时间就推迟了,现在终于有时间来写写Learning Spark最后一部分内容了. 第10 ...

  7. eclipse发布项目报错:Multiple Contexts hava a path of “/xxx“

    你的位置:首页 > Java编程 > eclipse发布项目报错:Multiple Contexts hava a path of “/xxx“ eclipse发布项目报错:Multipl ...

  8. SIP for android

    SIP for android   会话发起协议 Android提供了一个支持会话发起协议(SIP)的API,这可以让你添加基于SIP的网络电话功能到你的应用程序.Android包括一个完整的 SIP ...

  9. redis 获取key 过期时间

    <pre name="code" class="html">127.0.0.1:6379> keys *b4f107c6-e96c-4a1e- ...

  10. Mac与Window之间的共享文件

    Mac访问Window: Finder 菜单 “前往” ,然后“连接服务器”,在服务器地址输入 smb://windows主机名或ip地址/共享名(前提window已设置共享文件) Windows访问 ...