package SimpleTest;
/**
* @className: Test02
* @description: 接口中的default方法
* @author: CCQ
* @date: 2021/9/10
*
* default方法不是抽象方法,是Java新版本特性,它能够让接口添加方法时已经实现了此接口的类不报错,即不必重写default方法。当然也可以选择重写。
* 类似于抽象类里面的非抽象方法。
**/
public class Test02 {
public static void main(String[] args) {
or o1 =new or();
o1.show1();
o1.show2();
o1.show3();
}
}
interface b{
void show1();
void show2();
default void show3() {
System.out.println("show3");
}
}
class or implements b{
@Override
public void show1() {
System.out.println("show1");
}
@Override
public void show2() {
System.out.println("show2");
}
//根据需求选择是否重写
// @Override
// public void show3() {
// System.out.println("showshow3");
// }
}
package SimpleTest;
/**
* @className: Test03
* @description: 接口中的静态方法
* @author: CCQ
* @date: 2021/9/10
*
* 接口中的静态方法只能由接口调用,不能通过实现类名或者对象调用。因为如果实现了两个接口有同名的静态方法的话,会有冲突。
**/
public class Test03 {
public static void main(String[] args) {
c c1 = new cimplement();
c1.a();
c.b();
}
}
interface c{
void a();
static void b(){
System.out.println("接口中的静态方法!");
}
}
//接口c的实现类
class cimplement implements c{
@Override
public void a() {
System.out.println("接口c中的普通方法!");
}
}
package SimpleTest;
/**
* @className: Test04
* @description: 接口中的私有方法
* @author: CCQ
* @date: 2021/9/10
**/
//当接口中的有多个默认方法或静态方法有相同的代码实现时,就可以使用私有方法进行抽取共性部分进行封装。
public class Test04 {
public static void main(String[] args) {
d d1 = new dimplement();
d1.a();
System.out.println("----------------");
d1.b();
System.out.println("----------------");
d.c();
System.out.println("----------------");
d.d();
}
}
class dimplement implements d{
}
interface d{
private void e(){
System.out.println("gogogo");
System.out.println("gogogo");
System.out.println("gogogo");
}
default void a(){
System.out.println("One");
// System.out.println("gogogo");
// System.out.println("gogogo");
// System.out.println("gogogo");
e();
System.out.println("end");
}
default void b(){
System.out.println("Two");
// System.out.println("gogogo");
// System.out.println("gogogo");
// System.out.println("gogogo");
e();
System.out.println("end");
}
private static void f(){
System.out.println("gogogo");
System.out.println("gogogo");
System.out.println("gogogo");
}
static void c(){
System.out.println("static one");
// System.out.println("gogogo");
// System.out.println("gogogo");
// System.out.println("gogogo");
f();
System.out.println("end");
}
static void d(){
System.out.println("static two");
// System.out.println("gogogo");
// System.out.println("gogogo");
// System.out.println("gogogo");
f();
System.out.println("end");
}
}