دوستان چرا این کد ساده خطا میده

public class A { 

public void m(){}

}


public class B extends A{

@Override
public void m()

{

}}




public class DowncastDemo

public static void main (String[] args){

A a = new A();
B b = (B) a;
b.m();

}



بنده این کد رو که اجرا میکنم خطا میگیرم... هر دو کلاس یک متد مشترک دارن و لی وقتی سوپر کلاس کست میشه به کلاس فرزندش دیگه نمیتونه متد خودش رو اجرا کنه.. دلیلش چیه ؟ اینا که هر دو متد مورد نظر رو دارن پس چرا بعد کست شدن دیگه نمیتونه متد خودش رو اجرا کنه؟

class A cannot be cast to class B (A and B are in unnamed module of loader 'app')
at DowncastDemo.main