以下のコードを実行してみますと。
class Super{
public void publicMethod(){
System.out.println("super did public");
}
protected void protectedMethod(){
System.out.println("super did protected");
}
void defaultMethod(){
System.out.println("super did default");
}
private void privateMethod(){
System.out.println("super did private");
}
/* メインルーチン */
static public void main(String[] str){
Super s = new Sub();
s.publicMethod();
s.protectedMethod();
s.defaultMethod();
s.privateMethod();
}
}
/* 継承 */
class Sub extends Super{
public void publicMethod(){
System.out.println("sub did public");
}
public void protectedMethod(){
System.out.println("sub did protected");
}
public void defaultMethod(){
System.out.println("sub did default");
}
public void privateMethod(){
System.out.println("sub did private");
}
}
/*
結果
sub did public
sub did protected
sub did default
super did private
*/
privateなメソッドは継承できません。
蛇足的な追記。
- privateとabstractは同時に定義不可
- 上記のSubクラスのメソッドをprivateで定義するのは不可(アクセス権を弱くは出来ない)