java中的基本继承

时间:2017-11-04 15:05:45

标签: java inheritance

所以我有一个Superclass和两个ClassAClassB类扩展SuperclassClassASuperclass包含方法.doSomething()ClassB则不包含。 我在List<Superclass> objects中获得了ClassA和-B的实例。还有一个循环遍历objects并调用.doSomething(),如下所示:

for(Superclass o : objects){
    o.doSomething();
}

我的问题是:如果oClassA的实例,那么是ClassA.doSomething()被调用还是此循环只调用Superclass.doSomething()

4 个答案:

答案 0 :(得分:1)

是的,因为SuperClass实现了doSomething,ClassB继承了该实现,ClassA会覆盖它。

答案 1 :(得分:0)

是的,因为.doSomething()的方法ClassA会覆盖Superclass的方法。

答案 2 :(得分:0)

  class Super
{
 void hi()
 {
 System.out.println("Super class");
 }
}
class A extends Super
{
 void hi()
 {
  System.out.println("Class A");
 }

}
class B extends Super
{


}
public class Drive
{

public static void main(String[]args)
{
 Super s=new A(); 
 s.hi();                // prints "Class A"
 Super h=new B();
 h.hi();             // prints "Super Class" since B does not override Super
}
}                        //hope this helps

答案 3 :(得分:0)

如果某个实例属于ClassA,则会调用其方法,并且只有在ClassA没有实现的情况下才会使用超类方法。

如果将ClassA实例分配给超类类型的变量,则不会发生这种情况。在其他语言中,可能会有所不同,但对于Java,它总是那样。