SCJPノート(一)

911 ワード

1、デフォルトのアクセスレベルとprotect:
protectとデフォルトのアクセス制御レベルはほぼ同じですが、主な違いがあります.デフォルトメンバーにアクセスできるのは、デフォルトメンバーにアクセスするクラスが同じパッケージに属している場合のみです.保護メンバーの場合、サブクラスが異なるパッケージに存在していても、そのサブクラスはアクセスできます(継承によって).protectレベルが使用されている場合、パッケージ外のサブクラスが保護メンバーを継承すると、そのメンバーはこのサブクラス外の任意のコードに対してプライベートになりますが、サブクラスのサブクラスについてはそうではありません.サブクラスがメソッドを書き換えると、サブクラスから親メソッドを呼び出すことができます.2、書き換え:静的方法は書き換えられない;
 
リロード方法ではできないことは、戻りタイプだけを変えることです!!でもJDK 1から5以降、コヒーレント戻りという特殊な状況が発生した.
コヒーレントリターン:既知の継承関係の場合、そのサブクラスのリターンタイプを使用してそのインタフェース実装クラスまたは親メソッドを「再ロード」し、既知の実装クラスのリターンタイプがAPIよりも具体的である場合に、タイプ強制変換を回避するのによく使用されます.
例:
 
public class A{
	
}

class B extends A{
	
}
class C {
	public A test(){
		return new A();
	}
}

class D extends C{
	public B test() {
	    return new B();
	}
}

この場合、戻り値タイプのみを変更して書き換えることができます.