Object类的部分源代码   public class Object {
  public final native Class<?> getClass();
  public native int hashCode();
                    ...
           }可以看出,Object类不是抽象类
1.那么为什么它有抽象的方法?
2.是不是JDK,对Object类特殊对待?
3.这样设计有什么好处

解决方案 »

  1.   

    是native,不是abstract!看清楚了。
      

  2.   

    native是本地方法,不是抽象方法
      

  3.   

    public native int hashCode();
    我表达错误了,我的意思是方法体去哪里了?
    它又没有父类,
    这点和抽象方法很相似,虽然没有abstract修饰符我对这点好奇!
      

  4.   

    native方法的方法体不需在java文件中实现 而在cpp文件中实现可以将native方法比作Java程序同C程序的接口,其实现步骤:   1、在Java中声明native()方法,然后编译;   2、用javah产生一个.h文件;   3、写一个.cpp文件实现native导出方法,其中需要包含第二步产生的.h文件(注意其中又包含了JDK带的jni.h文件);   4、将第三步的.cpp文件编译成动态链接库文件;   5、在Java中用System.loadLibrary()方法加载第四步产生的动态链接库文件,这个native()方法就可以在Java中被访问了。 
      

  5.   

    在定义一个native method时,并不提供实现体(有些像定义一个java interface),因为其实现体是由非java语言在外面实现的。,
      

  6.   

    native方法是由C语言来实现的,JAVA是建立在C语言的基础之上的。
      

  7.   

    给你这个网址  深入理解  native吧
    http://hi.baidu.com/xiaoxiaolq/blog/item/f9d3c9f9c03dea53252df29a.html
      

  8.   

    楼上3位很好很强大,你们的意思是java是基于c实现的?
      

  9.   

    刚刚看了下Java\jdk1.6.0_10\include\jni.h有如下代码#ifndef _JAVASOFT_JNI_H_
    #define _JAVASOFT_JNI_H_#include <stdio.h>
    #include <stdarg.h>/* jni_md.h contains the machine-dependent typedefs for jbyte, jint
       and jlong */#include "jni_md.h"#ifdef __cplusplus
    extern "C" {
    #endif可以看出果然用到了,c++,c++然后又extern "C"
    谢谢各位啊
    长见识了
      

  10.   

    dxcv