1.default关键字
public interface UserService {
//自定义方法
void getUsername();
//默认方法
default void defaultUsername(){
System.out.println("UserService>>>>>>>defaultUsername");
}
//默认方法,子类重写
default void overrideDefaultUsername(){
System.out.println("UserService>>>>>>>overrideDefaultUsername");
}
}
public class UserServiceImpl implements UserService {
@Override
public void getUsername() {
System.out.println("UserServiceImpl>>>>>>>>>getUsername");
}
@Override
public void overrideDefaultUsername() {
System.out.println("UserServiceImpl>>>>>>>>>overrideDefaultUsername");
}
}
public class Test {
public static void main(String[] args) {
UserService userService = new UserServiceImpl();
userService.getUsername();
userService.defaultUsername();
userService.overrideDefaultUsername();
}
}
"结果打印数据:"
UserServiceImpl>>>>>>>>>getUsername
UserService>>>>>>>defaultUsername
UserServiceImpl>>>>>>>>>overrideDefaultUsername
2.static关键字
public interface UserService {
void getUsername();
default void defaultUsername(){
System.out.println("UserService>>>>>>>defaultUsername");
}
default void overrideDefaultUsername(){
System.out.println("UserService>>>>>>>overrideDefaultUsername");
}
static void staticUsername(){
System.out.println("UserService>>>>>>>staticUsername");
}
}
public class UserServiceImpl implements UserService {
@Override
public void getUsername() {
System.out.println("UserServiceImpl>>>>>>>>>getUsername");
}
@Override
public void overrideDefaultUsername() {
System.out.println("UserServiceImpl>>>>>>>>>overrideDefaultUsername");
}
}
在子类中发现不能重写被static关键字修饰的方法。
public class Test {
public static void main(String[] args) {
UserService userService = new UserServiceImpl();
userService.getUsername();
userService.defaultUsername();
userService.overrideDefaultUsername();
UserService.staticUsername();
}
}
"结果打印数据"
UserServiceImpl>>>>>>>>>getUsername
UserService>>>>>>>defaultUsername
UserServiceImpl>>>>>>>>>overrideDefaultUsername
UserService>>>>>>>staticUsername
总结 default: 1. detault关键字修饰的方法称为默认方法 2. 子类可以选择性的是否重写该方法 3. 接口中的default方法通过实例对象来调用 static: 1. static关键字修饰的方法称为静态方法 2. 子类不能重写该方法 3. 接口中的静态方法通过接口名.方法名()的方式来