2014-02-28 22 views
-1

父类:(Java)的超类S =新childClass

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

你可以运行并检查行为:) – stinepike

回答

3

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

是的,这是可能的,这就是所谓的多态行为在Java中

我们不应该只能称之为“新的修改()”,如果我们声明S作为 修改类?

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

了解更多关于PolymorphismInheritance,那么你就会明白他使用

+0

我什么时候可以使用它们? –

+0

@ user3363317:检查我的更新答案 –

0

它的一种多态性超类引用到子类对象。

你为什么要那样做?

Super s = new Child(); 

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