我可以使用关键字默认声明一个类默认值吗?例如:
default class Test{
}
答案 0 :(得分: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);
}
}
在这里,如果您提供了任何无效月份,那么它将落入默认部分。
答案 1 :(得分:2)
java 8有一个新功能,使用default关键字我们可以在接口中定义方法。
interface I {
public default void show() {
System.out.println("Hello");
}
}
在Java 8 JLS-13.5.6. Interface Method Declarations
中描述添加默认方法或将方法从abstract更改为default,不会破坏与预先存在的二进制文件的兼容性,但如果预先存在的二进制文件尝试调用该方法,则可能会导致IncompatibleClassChangeError。如果限定类型T是两个接口I和J的子类型,则会发生此错误,其中I和J都声明具有相同签名和结果的默认方法,并且I和J都不是另一个的子接口。 / p>
答案 2 :(得分:0)
声明"如果您没有为类或方法指定任何修饰符,则隐式地,它们默认为包私有"是完全错的。如果一个类是私有的,那么即使在同一个包中,该类也无法访问。但是,如果我们没有提及任何访问说明符,那么该类将被视为默认值,可以在包中访问。