使用构造函数时的静态类和动态类

时间:2014-06-16 23:13:26

标签: java constructor

假设我有一个超类和一个子类,如下所示。

class Super { 
 public void action( ) { 
 System.out.println( “Super’s action” ); 
 } 
} 

class Sub extends Super( ) { 
 public void action( ) { 
 System.out.println( “Sub’s action” ); 
 } 
}

在主要方法中,我称之为。

Super s1 = new Super( ); 
s1.action( ); 

Super s2 = new Sub( ); 
s2.action( ); 

Sub s3 = new Sub( ); 
s3.action( ); 

我知道输出将是

Super’s action 
 Sub’s action 
 Sub’s action 

我已经了解到在构造函数中,第一个单词是静态类类型,而带有()的部分是动态类。 我知道方法查找将始终在动态类中开始,所以我想知道的是,s2和s3之间有什么区别? 即静态类是父类型,或静态类是它自己的类型

1 个答案:

答案 0 :(得分:0)

如果Sub定义的方法不在Super,那么您无法从s2调用它。此外,如果某个方法采用Sub类型的参数,则无法将s2传递给它。