假设我有一个超类和一个子类,如下所示。
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之间有什么区别? 即静态类是父类型,或静态类是它自己的类型
答案 0 :(得分:0)
如果Sub
定义的方法不在Super
,那么您无法从s2
调用它。此外,如果某个方法采用Sub
类型的参数,则无法将s2
传递给它。