回答編集履歴

1 追記

KSwordOfHaste

KSwordOfHaste score 18049

2016/12/07 23:59  投稿

オーバーライド的な動作を期待されたのだと思いますが、フィールドはオーバーライドの対象ではないのでメソッドのオーバーライドとすると期待されている動作が行えます。例えば以下のような感じです。
基底クラス
protected int getNum() { return 10; }
派生クラス
@Override
protected int getNum() { return 20; }
protected int getNum() { return 20; }
---
追記:
Subclassのtestメソッド内で基底クラスの同じ名前のメソッドを呼びたいということならこんなふうにします。こうしておいてSubclassのインスタンスのtestメソッドを呼び出すと10と20の2つが表示されます。
```java
サブクラスのメソッド定義:
@Override
void test() {
 super.test();
 System.out.println(num);
}
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る