Я понимаю, что вы хотите сделать.Такие вещи возможны в Ruby, например.В Java это невозможно, потому что
new A() {
func1(){ }
};
относится не к типу A
, а к анонимному подклассу A
, который не суперклассу B
.Для этого компилятор генерирует класс $1
.
Но, в общем, попробуйте другой подход: «Пользуйся композицией, а не наследованием».Затем вы можете комбинировать func1 и func2 где-нибудь, просто используя два класса Strategy.Поэтому, если B
не использует никакого состояния A
, вы можете делегировать objectA
(тогда должно быть final
):
B objectB = new B() {
func1(){
objectA.func1()
}
func2(){
//implementation
}
};
Это похоже на ответ bashflyng, но большепрямой.