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

接下来大家我们讲点特殊的东西就是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. <转载>如果在浏览器网页标题栏左侧加自定义小图标

    效果如下: 首先制作一个16*16像素的ico格式的图片,命名为:favicon.ico,然后在网站head标签直接加入: <link rel="icon" href=&qu ...

  2. the least common multiplier

    Description There are many unsolvable problem in the world.It could be about one or about zero.But t ...

  3. delphi不同版本字符串类型的演化(要支持基于firemonkey的app调用,字符串最好使用olevariant类型)

    string,DELPHI2009以前的版本string=ansistring,一个字符占一个字节,DELPHI2009及以上版本string=unicodestring,一个字符占二个字节. cha ...

  4. 让进程在后台可靠运行的几种方法 nohup,setsid,&,disown,CTRL-z ,screen

    让进程在后台可靠运行的几种方法 几年前在developerWorks上面看到的文章,感觉非常实用,又简单整理了一下,转到这里,希望给看到的人带来一些帮助.文中提到的nohup和subshell方式一直 ...

  5. doT js模板入门

    doT.js github地址: doT.js 官方站点 实例1:简单 <!DOCTYPE html> <html lang="en"> <head& ...

  6. Android开发者指南-用户界面-拖放-Drag and Drop[原创译文]

      英文原文:http://developer.android.com/guide/topics/ui/drag-drop.html 版本:Android 4.0 r1 译者注:黄色底色为未决译文 快 ...

  7. 关于Android配色 自适应颜色的实现

    在Android4.4系统中,更加详细地介绍了关于颜色的细节并提供了使用colour的新教程,以使我们的应用更加独一无二.也就是说,作为一个设计师或者开发者,为你的APP做完美的配色已经变成了你的职责 ...

  8. hdu 4550 贪婪 思考题 权

    http://acm.hdu.edu.cn/showproblem.php?pid=4550 想了挺久,然后各种分类 最终AC,假设是现场,对自己没信心的话,预计还是要WA,,,,,,然后搜题解,发现 ...

  9. 引导加载程序:GRUB

    计算机在启动的时候,首先由BIOS中的程序执行自检,自检通过后,就根据CMOS的配置找到第一个可启动磁盘的MBR中的Boot Loader程序(一般在启动盘的第一个物理扇区,占446字节),并把控制权 ...

  10. GitHub上项目配置和导入eclispe的问题解决

    在github上下载的工程文件导入的时候总是遇到各种各样的问题,昨天晚上瞎忙一晚上查资料没搞定.早上找高手请教了一下,一起弄了好一会终于解决了,这里记录一下方法解决的具体方法步骤. 本方法适用于离线导 ...