繁体   English   中英

如何在主方法中访问A类的打印方法? 在main方法中创建的对象a和b之间的区别?

[英]How to access print method of class A in main method? Difference between objects a and b created in main method?

如何在主方法中访问A类的打印方法? 在main方法中创建的对象a和b之间的区别?

  abstract class A {
        void print() {
            System.out.println("A");
        }
    }

    class B extends A {
        void print() {
        System.out.println("B");
        }
    }



    public class test {
        public static void main(String[] args) {
            B b = new B();
            A a = new B();
            b.print();
            a.print();
        }

    }

如何在主方法中访问A类的打印方法?

您不能,因为您没有A的实例,只有B的实例,该实例已覆盖该方法。

在main方法中创建的对象a和b之间的区别?

它们是B不同实例。

将a初始化为新的A(),而不是新的B(),

要么

向B添加一个方法,例如printA()

void printA(){super.print(); }

在这两种情况下,都将调用class B overriden print()

情况1: B b = new B();

这种情况很简单。 您使用B参考创建B对象。

情况2: A a = new B();

在这里,您正在使用A reference创建B object 这称为创建对象或coding to an interface多态性。 由于您在class B 覆盖了 print() ,因此在运行时将调用class B重载方法。

其他选择:

在类B中创建一个方法,该方法将使用super关键字调用类A的打印方法。

   class B extends A {
        public void someOtherMethod(){
            super.print();
         }
    }
   from main:
      B  b = new B();
      b.someOthermethod();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM