У вас есть две проблемы в вашем коде.
Во-первых, вам нужно предоставить реализацию для любых абстрактных методов, чтобы ваш класс был инстанцируемым.Итак, в вашем случае:
@Override
public void methodToOverride(){
// does nothing
}
Во-вторых, и, что более важно, когда вы создаете экземпляр объекта типа A
, доступны только методы, относящиеся к A
.Поскольку вы определяете new B()
как тип A
, у вас не будет доступа к методу someOtherMethodNotFromClassA
.
Если вы хотите получить к нему доступ, вам нужно либо создать его экземпляр как класс B, либоиспользуйте его как класс B:
B someClass = new B();
someClass.someOtherMethodNotFromClassA();
или
A someClass = new B();
((B)someClass).someOtherMethodNotFromClassA();
Но имейте в виду, что последний вариант довольно уродлив и не прост в обслуживании.