开发者学堂课程【 Java 面试疑难点串讲1:面试技巧及语言基础:Default 关键字】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/24/detail/481
Default 关键字
最初时代开始,Default 基本上都是作为 swich 的语句联合使用。package cn. mldn . demo;
public class
TestSwitch {
public static void
main(String[ ] args) {
int
ch
=1;
switch
(
ch)
case
0 : System.
out.
println(
"内容是0"
);
case
1 : System.
out .
println(
"内容是1
");
case
2 : System.
out.
println(
"内容是2"
);
default
: System.
out
. println
("默认值"
);
}
}
}
内容是1
内容是2
默认值
所以最初在编写 swich 的时候往往都会在每一个 case 之中增加一些 break 语句。
package
cn.mldn. demo;
public class
TestSwitch {
public static void
main(String[ ]
args
) {
int
ch
=6;
switch
(
ch)
{
case
0:
System .
out
. print1n(
"内容是0"
);
break
;
case 1:
System.
out
. println(
"内容是1"
);-
break
;
case 2:
System.
out
, println(
"内容是2"
);
break
;
default
:
System. out . print1n(
"默认值"
);
}
}
}
从 JDK1.8开始出现了一些新的语法环境。
Lambda 表达式出现,接口的问题开始出现,假若此刻在最初某个项目的1.0版本里面定义有一个接口的方法,但是后来这个接口的子类特别多,大约有1000W个,在这样的情况下,如果要对接口扩充一个方法(并且这个方法所有子类的实现都一样),在这样的情况下,代码的编写就会异常的繁琐,此刻 Java 重新定义了接口的定义,出现了 default 与 static 定义接口的方法,而 default 方法好比一个普通方法,必须有实例化对象,static 方法可以直接使用接口名称进行调用。
package
cn.mldn. demo;
interface
IMessage {
public void
print( )
;//抽象方法
default void
getMsg( ) {
//是一个普通方法,JDK 1,8之后才有
System.
out
.println(
“******************************”
);
}
}
Class
MessageImpImp1
implements
IMessage {
@Override
Public void
print ( ){//覆写的方法
System.
out
.println(
this
.getClass( ).getName());
}
}
Public class
TestDefault {
Public static void
main(String[ ]
args
) {
IMessage
msg
=
new
MessageImp1( );
msg
.getMsg( );
}|
default 在接口中的出现改变了传统接口实现模式,可以定义普通方法,这样假设某些方法对于所有的子类都具有同样的实现,则可减少定义,但此类形式暂未完全推广开,先作为连接即可。