Java 接口

Java 接口

接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。

JDK8开始,可以定义全局常量、抽象方法、静态方法和默认方法。

一个类只能继承一个抽象类,但一个类可以实现多个接口。

Interface 保存在.java的文件中,类保存在.class文件中。

public interface InterfaceTest {

    //静态方法
    public static void method1(){
        System.out.println("Method1:quick sort");
    }
    //默认方法
    public default void method2(){
        System.out.println("Method2:bubble sort");
    }

    public default void method3(){
        System.out.println("Method3:heap sort");
    }

    public default void method4(){
        System.out.println("Method4:Insert sort");
    }

    public default void method5(){
        System.out.println("InterfaceTest Method5:sort");
    }
    public default int method6(){
        return 1;
    }
}
public interface InterfaceTestB {
    public default void method5(){
        System.out.println("InterfaceTestB method5: sort");

    }


}

接口在类中实现:

public class SubInterfaceTest {
    public static void main(String[] args) {
        SubClass s = new SubClass();
        //s.method1();//不能调用
        //1.接口中的静态方法只能通过接口调用
        InterfaceTest.method1();//Method1:quick sort
        //2.通过实现类的对象,可以调用接口中的默认方法
        s.method2();//Method2:bubble sort
        //3.如果实现类重写了接口的默认方法,调用时仍然调用的是重写的方法
        s.method3();//SubClass method3:heap sort

        //4.如果子类或实现类继承的父类和实现的接口声明了同名同参数的方法,那么子类在没有重写的情况下,默认调用父类中的方法
        s.method4();//Superclass method4:insert sort

        //5.如果实现类实现了多个接口,多接口中定义了同名同参数的方法,在没有重写的情况下,报错-》接口冲突,想要使用必须重写该方法
        //s.method5();//不重写会编译报错
        s.method5();//SubClass method4:sort


    }
}

class SubClass extends SuperClass implements InterfaceTest, InterfaceTestB{
    public void method3(){
        System.out.println("SubClass method3:heap sort");
    }
    public void method5(){
        System.out.println("SubClass method4:sort");
    }

}

接口的应用:代理模式
/*
接口的应用:代理模式
 */
public class NetworkTest {
    public static void main(String[] args) {
        Server server = new Server();
        ProxyServer proxyserver = new ProxyServer(server);
        
        //代理类的方法包含了被代理类的方法
        proxyserver.browse();//Network check before visiting network.
                             //Server visit network.
    }


}

interface NetWork{
    public void browse();
}

//被代理类
class Server implements NetWork{

    @Override
    public void browse() {
        System.out.println("Server visit network.");

    }
}

//代理类
class ProxyServer implements NetWork{
    private NetWork work;

    public void check(){
        System.out.println("Network check before visiting network.");
    }
    public ProxyServer(NetWork work){
        this.work = work;
    }

    @Override
    public void browse() {
        check();
        work.browse();


    }


}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值