有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (4) 个答案

  1. # 1 楼答案

    当您创建子对象时,子对象和父对象有一个共同的方法假设display()

    Parent a = new Child();
    a.display(); 
    

    它调用运行时子类方法而不是父类

    编辑:

    public class Parent {
    
        public void display() {
    
            System.out.println("Parent-----Display");
    
        }
    }
    
    
    public class Child extends Parent{
    
        public void display() {
            System.out.println("This is child method.");
        }
    
        public static void main(String[] args) {
            Parent parent=new Child();
            parent.display();
        }
    }
    

    输出:

    This is child method.
    
  2. # 2 楼答案

    在将子对象指定给父对象的第二种情况下,允许该子对象充当父对象,以便它可以与其他父对象交互。实际上,它仍然是一个子对象,有自己的字段和方法(重写或不重写),但现在您可以像使用父对象一样使用它。将它放在一个父数组中,与另一个父数组进行比较,等等

  3. # 3 楼答案

    创建的情况也称为runtime polymorphism,这意味着Jvm将决定在运行时访问哪些类成员。前

    class Parent {
        public void disp() {
            System.out.println("Parent");
        }
    }
    public class Child extends Parent {
        public void disp() {
            System.out.println("Child");
        }
        public static void main(String args[]) {
            Parent p = new Parent();
            Parent p1 = new Child();
            p.disp();
    
            p1.disp();
    
        }
    }
    

    输出

    Parent
    Child
    

    表示jvm调用指定对象类型上的方法。当您将对象类型用作子对象时,它将调用子方法;当您调用父对象时,它将使用父方法

  4. # 4 楼答案

    如果您不想要Child对象,那么第二种方法就没有意义

    第二种方法只有在需要子对象的情况下才有意义,但是可以灵活地将Child对象替换为Child2或其他一些Child对象,这些对象在以后透明地扩展Parent对象

    一个非常常用的例子是ListArrayListLinkedList。如果希望返回列表对象类型,但在实现中可以灵活地将ArrayList替换为LinkedList(或将LinkedList替换为ArrayList),则可以编写如下代码:

    List someRefer = new ArrayList();
    

    在某种程度上,如果您的实现需要大量插入/删除列表,那么您会意识到LinkedList是这种情况下的最佳数据结构,那么您可以灵活地将代码更改为:

    List someRefer = new LinkedList();