0

キーワードdefaultを使用してクラスのデフォルトを宣言できますか?例えば:

default class Test{

}
4

3 に答える 3

3

と呼ばれるアクセス修飾子はありdefaultません。クラスまたはメソッドに修飾子を指定しない場合、暗黙的に、デフォルトでパッケージプライベートになります。

ただし、Javaには、ステートメントdefaultで使用されるキーワードがあります。switch case提供されたオプションがどのような場合でも、デフォルトの動作を指定した場合は、それが使用されます。

例えば、

public class SwitchDemo {
    public static void main(String[] args) {

        int month = 8;
        String monthString;
        switch (month) {
            case 1:  monthString = "January";
                     break;
            case 2:  monthString = "February";
                     break;
            case 3:  monthString = "March";
                     break;
            case 4:  monthString = "April";
                     break;
            case 5:  monthString = "May";
                     break;
            case 6:  monthString = "June";
                     break;
            case 7:  monthString = "July";
                     break;
            case 8:  monthString = "August";
                     break;
            case 9:  monthString = "September";
                     break;
            case 10: monthString = "October";
                     break;
            case 11: monthString = "November";
                     break;
            case 12: monthString = "December";
                     break;
            default: monthString = "Invalid month";
                     break;
        }
        System.out.println(monthString);
    }
}

ここで、無効な月を指定すると、デフォルトのセクションに分類されます。

于 2013-03-09T16:26:07.020 に答える
2

java 8に付属する新機能があり、デフォルトのキーワードを使用して、インターフェイスでメソッドを定義できます。

interface I {
   public default void show() {
     System.out.println("Hello");
   }
}

Java8JLS-13.5.6で説明されています。インターフェイスメソッドの宣言

デフォルトのメソッドを追加したり、メソッドを抽象からデフォルトに変更したりしても、既存のバイナリとの互換性は失われませんが、既存のバイナリがメソッドを呼び出そうとすると、IncompatibleClassChangeErrorが発生する可能性があります。このエラーは、修飾タイプTが2つのインターフェイスIとJのサブタイプであり、IとJの両方が同じ署名と結果を持つデフォルトのメソッドを宣言し、IもJも他方のサブインターフェイスではない場合に発生します。

于 2016-10-04T10:44:46.057 に答える
0

「クラスまたはメソッドに修飾子を指定しない場合、暗黙的に、デフォルトでパッケージプライベートになります」というステートメントは完全に間違っています。クラスがプライベートの場合、そのクラスは同じパッケージ内でもアクセスできません。ただし、アクセス指定子について言及しない場合、パッケージ内でアクセスできるクラスがデフォルトとして使用されます。

于 2014-11-18T16:33:31.263 に答える