I can't understand this segment of code

abstract class absc{

//int x;

void abscMethod(){

System.out.println("this is absc's method1");

}

absc(){

System.out.println("in the abstract class absc");

abscMethod();

abscMethod2();

}

abstract void abscMethod2();

}

class devFrabsc extends absc{

public devFrabsc(){

}

void abscMethod(){

System.out.println("this is devFrabsc's method1");

super.abscMethod();

}

public void abscMethod2(){

System.out.println("this is devFrabsc's method2");

//super.abscMethod2();

}

}

public class HelloDate {

public static void main(String[] args) {

devFrabsc f1 = new devFrabsc();

}

}

the result is :

in the abstract class absc

this is devFrabsc's method1

this is absc's method1

this is devFrabsc's method2

what I can't unserstand is "abscMethod() in the absc which is a abstract class is not an abstract method, so why when call abscMethod, the abscMethod of the derived class is called?

Thanks for your reply!

[1119 byte] By [zidadia] at [2007-10-3 4:53:44]
# 1
Because that's how polymorphism works, since it's overridden in the subclass (which you're working on) the subclass' method is called.
-Kayaman-a at 2007-7-14 22:58:36 > top of Java-index,Java Essentials,Java Programming...