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というアクセス権限が必要です。
具体的な使用:
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()は直接に転送すればいいです。