黑马程序员技术交流社区

标题: Object类问题【已解决】 [打印本页]

作者: 刘佳    时间: 2012-8-8 21:29
标题: Object类问题【已解决】
本帖最后由 刘佳 于 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;  //这句不理解
}
作者: yb61776662    时间: 2012-8-8 21:53
(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;
作者: 刘佳    时间: 2012-8-8 22:04
yb61776662 发表于 2012-8-8 21:53
(1)是所有类的根类,超类。
           java中提供的类以及我们自定义的类都直接或者间接的继承自Object类。
:bool ...

我想问的是这句代码什么意思
Demo d = (Demo)obj;
作者: yb61776662    时间: 2012-8-8 22:10
就相当于你传进了一个Object类型的参数 但是你要调用Demo里的成员时Object中有他的成员所以必须强制转换成Demo类型
作者: yb61776662    时间: 2012-8-8 22:14
就相当于你传进了一个Object类型的参数 但是你要调用Demo里的成员时Object中没有他的成员所以必须强制转换成Demo类型    刚才少打个字没有他的成员所以必须把Object类型强制转换成Demo类型
作者: 徐小骥    时间: 2012-8-8 22:15
强制将obj装换为Demo类型 一般看见XX x=(YY)z;这种格式的都是强制装换!
作者: 焦晨光    时间: 2012-8-8 22:15
我想问的是这句代码什么意思
Demo d = (Demo)obj;

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

作者: 刘佳    时间: 2012-8-8 22:31
焦晨光 发表于 2012-8-8 22:15
我想问的是这句代码什么意思
Demo d = (Demo)obj;

您解释的这句代码我明白了,但是我不理解为何要向下转型,以及一般什么时候用到向下转型呢?
作者: 焦晨光    时间: 2012-8-8 22:42
刘佳 发表于 2012-8-8 22:31
您解释的这句代码我明白了,但是我不理解为何要向下转型,以及一般什么时候用到向下转型呢? ...

这个就要涉及到多态了 关于多态的概念 楼主可以先看视频 或先了解这方面的知识
了解了多态以后 有不明白的问题 具体问题具体分析 @_@
作者: 刘佳    时间: 2012-8-8 22:47
焦晨光 发表于 2012-8-8 22:42
这个就要涉及到多态了 关于多态的概念 楼主可以先看视频 或先了解这方面的知识
了解了多态以后 有不明白 ...

晕,多态的视频我已经看完了,但感觉还是一头雾水!
作者: 焦晨光    时间: 2012-8-8 22:52
刘佳 发表于 2012-8-8 22:47
晕,多态的视频我已经看完了,但感觉还是一头雾水!

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2