A a=new A()和B a=new A()是一样的吗
(A类是B类的父类)
这两种书写方式有什么区别吗

解决方案 »

  1.   

    如果A类是B类的父类,那么这是编译都通不过的
    只有B类是A类的父类,我们的讨论才有意义A a=new A()的时候,a可以调用定义在A中所有的公共方法B a=new A()
    的时候,a只可以调用定义在B中的所有公共方法你可以把a转型成A的对象A as=(A)a
    这个时候,就可以访问定义在A中的所有公共方法了
      

  2.   

    B a=new A() ??
    可以这么写吗?  我写的时候报错啊
      

  3.   

    如果A类是B类的父类,那么这是编译都通不过的
    只有B类是A类的父类,我们的讨论才有意义
    ==============================
      

  4.   

    如果A类是B类的父类,那么这是编译都通不过的
    只有B类是A类的父类,我们的讨论才有意义A a=new A()的时候,a可以调用定义在A中所有的公共方法B a=new A()
    的时候,a只可以调用定义在B中的所有公共方法你可以把a转型成A的对象A as=(A)a
    这个时候,就可以访问定义在A中的所有公共方法了
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~有疑义!
    B a=new A()
    的时候,a只可以调用定义在B中的所有公共方法???没有考虑扩展类方法覆盖超类方法的多态机制(对实例方法而言)!此时a无法调用定义在B中的方法,而只能调用B中同名的静态方法!
    For instance:public class Father{

    static void showStatic()
    {
    System.out.println("父类的静态方法");
    }

        void showNonStatic()
        {
            System.out.println("父类的实例方法");
        }
    }class Son extends Father{
     
    static void showStatic()
    {
    System.out.println("子类的静态方法");
    }

        void showNonStatic()
        {
            System.out.println("子类的实例方法");
        } 

    }class Test{

    public static void main(String[] args)
    {
    Father obj=new Son();//   扩展转化,自动的

    obj.showStatic();
    obj.showNonStatic(); }
    }执行结果:父类的静态方法
              子类的实例方法
    不知道是否说清楚?
      

  5.   

    public class Father{

    public Father(){
    System.out.println("父类的构造方法");
    }

    static void showStatic()
    {
    System.out.println("父类的静态方法");
    }

        public void showNonStatic()
        {
            System.out.println("父类的实例方法");
        }
    }class Son extends Father{

    public Son(){
    System.out.println("子类的构造方法");
    }
     
    static void showStatic()
    {
    System.out.println("子类的静态方法");
    }

        public void showNonStatic()
        {
            System.out.println("子类的实例方法");
        } 

    }class Test{

    public static void main(String[] args)
    {
    Father obj=new Son();//   扩展转化,自动的

    obj.showStatic();
    obj.showNonStatic(); }
    }结果是:父类的构造方法
    子类的构造方法
    父类的静态方法
    子类的实例方法说明它是先调用父类的构造方法,再用子类的构造方法