书上说 Graphics是抽象类 那么对于抽象类我们是不能实例化的 但是这个定义--Graphics g为什么又是对的?本人初学java  问题比较弱 不要见笑

解决方案 »

  1.   

    其实JAVA和生活中很多事是很相似的
    想想生活中啊
      

  2.   

    是不能实例话,但子类和父类是一个is a的关系,用的了父类的地方肯定可以用子类,你传参数的时候肯定不会传一个graphics实例(因为他不能实例化),而解释器也不知道你扩展的子类叫什么,只能用父类做一个统一的接口了.
    注:个人观点,仅供参考.我也是才学了一年多,就这么点体会.我的qq229884170,可以一起学,如果你愿意.
      

  3.   

    Graphics g=new A();创建一个类A的对象g上抛为Graphics类,这样是可以的,如果是这样:Graphics g=new Graphics();                  //这样是错误的。这里反映了java的多态性.
      

  4.   

    Graphics g;实际上是定义了一个Graphics类型的引用,类似于C里的指针,它可以指向任何一个Graphics类型的子类型的实例。因为这里并没有生成一个Graphics类型的实例,所以它是对的。g = new A();先用new生成了一个A类型的实例(A应为Graphics类型的子类型),然后赋值给g(就是让g指向这个
    实例)。引用跟实例的关系可以理解为遥控器跟电视机的关系。初学java, 应该先把引用类型和值类型的概念搞清楚。
      

  5.   

    看来java还是和C++有比较大的区别的 
    谢谢上面几位的回答