(java)Superclass s = new childClass

时间:2014-02-28 05:07:45

标签: java

家长班:

public class superClass {

    private void m1() {
        System.out.println("SuperClass's m1()");
    }

    public void m2() {
        System.out.println("SuperClass's m2()");
        m1();
    }
}

儿童班:

public class Modify extends superClass {

    public void m1() {
        System.out.println("Modify's method1");
    }

    public static void main(String args[]) {
        superClass s = new Modify();
        s.m2();
    }
}

我什么时候使用:

superClass s = new Modify();

而不是:

Modify s = new Modify();

是否可以在左侧声明s为superClass但在右侧调用'new Modify()'? 如果我们将s声明为Modify类,我们是否应该只能调用'new Modify()'?

2 个答案:

答案 0 :(得分:3)

  

是否可以在左侧声明s为superClass但是   在右侧调用'new Modify()'?

是的,这是可能的,它被称为Java中的多态行为

  

如果我们将s声明为a,我们不应该只能调用'new Modify()'   修改类?

由于ModifysuperClass的子类,因此它继承了所有超类公共方法。因此,完全可以调用超类公共方法,因为所有公共方法都是由子类继承的。这在Java中称为继承。

详细了解PolymorphismInheritance,然后了解他的使用情况

答案 1 :(得分:0)

它是一种对子类对象的多态SuperClass引用。

你为什么这样做?

Super s = new Child();

从s开始你可以调用super的所有方法,因为它指向一个孩子和孩子is-a super,你也可以使用被覆盖的子方法。