呵呵,你学了半年,这个还不知道啊看看think in java你就明白了这些是基础,自己学吧

解决方案 »

  1.   

    1、你的2已经回答了1的问题;
    2、A也许是一个接口,即使不是,它也是B的超类,B中有A不具备的特征;而现在操作a的人不关心这些多余的特征。
    3、这句的前提是前面有这样的语句:A a;
       变量的声明和实例化有时不一定同时进行,你可以先声明了(A a;),然后在必要的时候再实例化(a=new A(););
    4、这是Java语言的规定,你不服也得这样用:)
      

  2.   

    1、A a=new A();
    这是实例化一个A的对象,即a是class A的一个句柄
    2、A a=new B(); 
    很明显,class B是扩展A或者A的子类而来(即A是B的父类),所以可以这样实例化一个B的对象。比如JFrame是扩展Frame而来,你便可以这么定义:
    Frame a = new JFrame();
    3、a=new A();  
    你肯定忘了看程序的前面代码,必定会有这个语句A a;你可以看做它只是定义一个类型为A的变量a,却未初始化
    4、B b, A a=(A)b
    由于B是A的子类,所以B类型变量可以直接造型为类型A的变量
    反过来则不行
      

  3.   

    1 A a=new A();  //已经创建对象a,难道不返回类A型,一定的指明?
    好像很多语言都要这样定义吧.
    比如; int i=0; //已经是整型i,一定的指明?
    你是用VB和脚本习惯了是吗?在定义中,如果你的程序要不出编译错的话,应该是B必须是A的一个子类吧?!
    2   A a=new B();  //不是子类,不可能是对的.
    3 a=new A();  //同1 有什么区别?
    没区别.4 B b, A a=(A)b; 这里右边看起来已经A化,左边再加一个A,好像多此一举
    强制转换,C也有吧.有什么疑惑吗?
      

  4.   

    1.其实说起来不返回类型也是返回类型,所以跟其他返回类型一样,也得加上;
    2.如果B是A的子类说明可以通过操作a来实现B中的一些特性;
    3.有时声明和实例化是写在一起的,有时是分开的;
    4.这是人家规定的用法嘛,有什么不妥吗?
      

  5.   

    jeckykang alphazhao 二位在第二问题上完全同!
      

  6.   

    第四个问题还有重要的地方没指明,只用greencoffe说到
    就是 A 和 B 是不是一定得存zai extends 关系吗?