30、java学習の漏れを調べて補充する
1542 ワード
勉強を始めたばかりの時、感覚はよく分かりました。自分でコードを書いている時、どうしていつも通じないですか?
1、アクセス権限:
public 、protected、default 、prvate
publicとprvateはよく違います。defaultとprotectedを混同します。
クラスの一般的な声明はpublicのように他のパッケージやクラスでの呼び出しに便利です。方法の装飾の上でとても大きい違いがあって、よくpublicとprotectedで修飾して、とても少なくdefaultとprvateを使います;public声明の方法もよく分かりますが、どうしてprotectedで修飾しますか?
例えば、A.fun 1()の方法があります。プログラムの運行安定に関わるかもしれません。アクセスを制限しないと、その実行してはいけないところでnew A().fun 1()という方法を実行してしまうと、多くのトラブルが発生します。したがって、アクセスを制限します。しかし、どこかでこの方法を実行する必要があります。defaultまたはprvateに設定したら、オフショアで永遠にアクセスできなくなります。これはprotectedというアクセス権限が必要です。
具体的な使用:
2、実現インターフェース:
1、アクセス権限:
public 、protected、default 、prvate
publicとprvateはよく違います。defaultとprotectedを混同します。
クラスの一般的な声明はpublicのように他のパッケージやクラスでの呼び出しに便利です。方法の装飾の上でとても大きい違いがあって、よくpublicとprotectedで修飾して、とても少なくdefaultとprvateを使います;public声明の方法もよく分かりますが、どうしてprotectedで修飾しますか?
例えば、A.fun 1()の方法があります。プログラムの運行安定に関わるかもしれません。アクセスを制限しないと、その実行してはいけないところでnew A().fun 1()という方法を実行してしまうと、多くのトラブルが発生します。したがって、アクセスを制限します。しかし、どこかでこの方法を実行する必要があります。defaultまたはprvateに設定したら、オフショアで永遠にアクセスできなくなります。これはprotectedというアクセス権限が必要です。
具体的な使用:
package org.skx
public A{
protected say(){
System.out.println("ok");
}}
package org.skx2
public B extends A{
protected say(){ // public
super.say();
}}
注意:1、アクセス権限は拡張のみで縮小できません。2、親のプロテックスの方法または属性を呼び出すには、この方法を上書きするしかないです。方法の中でsuperキーワードを使って引用し、直接にnew B().say()を使います。はアクセスできません。属性は同じです。3、superキーワードはpublicとprotected修飾の方法(属性)しか適用できません。2、実現インターフェース:
public interface A{
public void sayHI();
}
public interface B{
public void sayHello();
}
public class AB impliments A,B{
public void sayHI(){
System.out.println("hi');
}
public void sayHello(){
System.out.println("hello");
}
}
今がA ab=new AB()だったらsayHelloの呼び方はどうなりますか?(B)ab.sayHello()は直接に転送すればいいです。