Java 这两种创建对象的方法有什么不同吗

Java 这两种创建对象的方法有什么不同吗,java,Java,我刚学过java。我正在摆弄这两种创建对象的方法之间的差异 public class A { } public class B extends A { } public static void main(String[] args){ A object = new B(); B object = new B(); } 让我们用下面的例子来理解它 在类A中,我们添加了一个getMethodofA()。因此,将引用变量创建为A或B并不重要。作为一个超类,getMetho

我刚学过java。我正在摆弄这两种创建对象的方法之间的差异

public class A {
}
public class B extends A {
}
public static void main(String[] args){
       A object = new B();
       B object = new B();
}

让我们用下面的例子来理解它

  • 在类A中,我们添加了一个getMethodofA()。因此,将引用变量创建为A或B并不重要。作为一个超类,getMethodofA()将可用于类型A或类型B的对象

  • 在类B中,我们添加了一个getMethodofB()。因此,将引用变量创建为A或B很重要。如果使用引用变量创建对象,则只有getMethodofA()可用。而如果使用引用变量B创建对象,则两个方法都将可见getMethodofA()和getMethodofB()


  • 这是一个很好的例子。你能添加一些文本(你自己的,或者从一个教程中引用的,等等)并用引文来解释这个例子吗?虽然实际的规则是每个B都是A,因此我们可以调用A的方法,即使声明的类型是B,但根据经验我们可能很清楚,这可能仍然会让OP和其他读者感到困惑。
    public class A {
    
         public void getMethodofA(){
             System.out.println("I am method A")
         }
    
    }
    
    public class B extends A {
         public void getMethodofB(){
            System.out.println("I am method B")
        }
    }
    
    public static void main(String[] args){
        A objectA = new B();
        objectA.getMethodofA();//No error
        objectA.getMethodofB();//Compile time error
    
        B objectB = new B();
        objectB.getMethodofA();//No error
        objectB.getMethodofB();//No error
    }