A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘佳 中级黑马   /  2012-8-8 21:29  /  2282 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘佳 于 2012-8-8 23:00 编辑

class Demo
{
private int num;
Demo(int num)
{
  this.num = num;
}

public boolean equals(Object obj)
{
  Demo d = (Demo)obj;  //这句不理解
}

10 个回复

倒序浏览
(1)是所有类的根类,超类。
           java中提供的类以及我们自定义的类都直接或者间接的继承自Object类。
:boolean equals(Object obj)
                  用于比较两个对象的地址值是否相同。
                  我们获取对象后,比较它的地址值意义不大。所以也会对这个方法进行重写。
                  重写要完成什么功能,是根据需求定的。

                  假如:有一个学生类,其中有一个int类型的age成员变量。我们需要用此方法
                        实现比较学生的年龄是否相同。

                  public boolean equals(Object obj) //向上转型
                  {
                        //为了提高效率
                        if(this == obj)
                        {
                                return true;
                        }

                        //为了提高程序的健壮性
                        if(!(obj instanceof Student))
                        {
                                return false;
                        }

                        //向下转型
                        Student s = (Student) obj;
                        return this.age == s.age;
回复 使用道具 举报
yb61776662 发表于 2012-8-8 21:53
(1)是所有类的根类,超类。
           java中提供的类以及我们自定义的类都直接或者间接的继承自Object类。
:bool ...

我想问的是这句代码什么意思
Demo d = (Demo)obj;
回复 使用道具 举报
就相当于你传进了一个Object类型的参数 但是你要调用Demo里的成员时Object中有他的成员所以必须强制转换成Demo类型
回复 使用道具 举报
就相当于你传进了一个Object类型的参数 但是你要调用Demo里的成员时Object中没有他的成员所以必须强制转换成Demo类型    刚才少打个字没有他的成员所以必须把Object类型强制转换成Demo类型
回复 使用道具 举报
强制将obj装换为Demo类型 一般看见XX x=(YY)z;这种格式的都是强制装换!
回复 使用道具 举报
我想问的是这句代码什么意思
Demo d = (Demo)obj;

其实楼上说的很清楚了 只不过没有拿本例来解释
这句代码的意思就是java里的一个概念 向下转型
我们知道object类是所有类的父类 也就是毕老师说的上帝
我们往自己类里的方法里传值的时候 要看看 传入的值我们能否接受能否处理
所以我们就要尝试着将传入的值转换成我们想要处理的类型
而这句 Demo d = (Demo)obj;  就是将传入值的类型强制转换成我们想要处理的类型
object是超类 而我们定义的类Demo是其子类 所以父类转子类
就是所谓的向下转型
回复 使用道具 举报
焦晨光 发表于 2012-8-8 22:15
我想问的是这句代码什么意思
Demo d = (Demo)obj;

您解释的这句代码我明白了,但是我不理解为何要向下转型,以及一般什么时候用到向下转型呢?
回复 使用道具 举报
刘佳 发表于 2012-8-8 22:31
您解释的这句代码我明白了,但是我不理解为何要向下转型,以及一般什么时候用到向下转型呢? ...

这个就要涉及到多态了 关于多态的概念 楼主可以先看视频 或先了解这方面的知识
了解了多态以后 有不明白的问题 具体问题具体分析 @_@
回复 使用道具 举报
焦晨光 发表于 2012-8-8 22:42
这个就要涉及到多态了 关于多态的概念 楼主可以先看视频 或先了解这方面的知识
了解了多态以后 有不明白 ...

晕,多态的视频我已经看完了,但感觉还是一头雾水!
回复 使用道具 举报
刘佳 发表于 2012-8-8 22:47
晕,多态的视频我已经看完了,但感觉还是一头雾水!

我也是一个java初学者,我刚开始看视频和教材的时候也是很抓狂的,很痛苦的,这是一个过程,慢慢的经历了这些以后,再遇到问题就反复的看,不停的查资料,再加上自己的总结,其实学进去之后,这些问题就都很简单了,看书或者看视频的时候一定要静下心来,一颗浮躁的心永远学不到什么的,好了,愿楼主取得很大的进步,我们一起加油!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马