黑马程序员技术交流社区

标题: 关于Object类的疑惑。……....... [打印本页]

作者: 赵太云    时间: 2013-1-13 19:54
标题: 关于Object类的疑惑。…….......
本帖最后由 冯海霞 于 2013-1-16 10:43 编辑

      以下是查java 的API里面的解释:
                   类Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。
         Object是一个类,为什么这里要说是实现而不说继承或重写呢?  实现不是用于描述接口的吗?
作者: ying    时间: 2013-1-13 20:06
那你首先要搞清楚实现和继承的区别!
继承:如果多个类的某个部分的功能相同,那么可以抽象出一个类出来,把他们的相同部分都放到父类里,让他们都继承这个类。Object就是从所有的类中提炼出来的一个类,把共性的方法定义在里面!
实现:如果多个类处理的目标是一样的,但是处理的方法方式不同,那么就定义一个接口,也就是一个标准,让他们的实现这个接口,各自实现自己具体的处理方法来处理那个目标
作者: 赵太云    时间: 2013-1-13 20:10
ying 发表于 2013-1-13 20:06
那你首先要搞清楚实现和继承的区别!
继承:如果多个类的某个部分的功能相同,那么可以抽象出一个类出来, ...

还是不明白。……。…………
作者: jonn    时间: 2013-1-13 20:19
其实上这就是类加载体系结构,Object中的很多方法都是native的,通过jni调用本地c语言函数库来实现
LZ,所有对象(包括数组)都实现这个类的方法,你常常写的java程序就是Object的子类,一旦执行主线程main()直接加载到解释器上面了
继承?Object是根类,难道它还有父类? java的API 中的所有类都是Object的子类,这就是类继承加载结构,LZ不懂?Object的子类完全可以重写
Object运行类的方法,例如 toString() 打印对象堆区的数据
class A{
  private int a;
  private String b;
  A(int a,String b){
    this.setA(a);
    this.setB(b);
  }
protected void setA(int a){
  this.a=a;
}
protected int getA(){
  return a;
}
protected void setB(String b){
   this.b=b;
}
protected String getB(){
  return b;
}
public String toString(){          //重写Object的toString() 方法
  return  this.getA()+","+this.getB();
}
}

实现接口 完全可以啊,知道解耦么?
Object的clone() 方法没实现接口 ,子类要实现克隆,该类的对象 原始类必须实现 Cloneable接口

class Person  implements Cloneable{
   ......                  // 这里就不写了,LZ应该懂滴
  }
pulic class Test{
   public static void main(String[] args){
     Person p1=new Person();
     Person p2=p1.getClass().Clone();   //注意  p1!=p1.getClass().Clone()   p2.getClass()==p1.getClass()
}
}




作者: 赵太云    时间: 2013-1-13 20:21
本帖最后由 赵太云 于 2013-1-13 20:42 编辑
赵文 发表于 2013-1-13 20:19
其实上这就是类加载体系结构,Object中的很多方法都是native的,通过jni调用本地c语言函数库来实现
LZ,所 ...


还是不知道.......................................................
作者: jonn    时间: 2013-1-13 21:08
赵太云 发表于 2013-1-13 20:21
还是不知道.......................................................

:L........
作者: 黄锦成    时间: 2013-1-14 00:50
看了一下源码和英文的API说明,觉得用“实现”这个词不是很适合,因为在类中没有abstract方法。应该用“继承或覆写”来代替比较好
作者: 陈丽莉    时间: 2013-1-14 14:56
围观好了。。   

作者: liuzr1026    时间: 2013-1-14 16:45
1.首先object是所有类的一个根类,不是接口。
2.不用在意语言表述问题,例如,类中的方法我们可以叫做函数。只要我们理解了,想怎么叫它都行。
3.继承或重写表达比较片面,还不如直接用实现。




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