class A{

A(){

System.out.println("A");

}

void dcinside(){

System.out.println("나는 엠창인생 디시인입니다.");

}

}


class B extends A{

B(){

System.out.println("B");

}

void dcinside(){

System.out.println("나는 개병신 디시충입니다.");

}

}


public class Inheritance {

public static void main(String [] args){

B b = new B();

A a=(A)b;

a.dcinside();

A aa= new B();

aa.dcinside();

}


}


/* 실행결과 : 

A
B
나는 개병신 디시충입니다.
A
B
나는 개병신 디시충입니다.

*/


그러니깐 코드는 위랑 같고 대충 설명을 해보면 class B가 A를 상속하거덩요. 그리고 dcinside라는 메소드를 오버라이딩 하고 있고. 
근데 문제는 class B에 속한 객체 b를 만들고 이걸 class A로 형변환한 뒤 dcinside를 불러주면 (내 생각에는) class A의 메소드 dcinside가 작동되어야 할텐데 실제로는 class B의 메소드가 작동되더라고요. 

왜 그런지 궁금합니다.