美文网首页
Java基础(4)——接口interface

Java基础(4)——接口interface

作者: 让时间走12138 | 来源:发表于2020-03-28 16:30 被阅读0次

本节内容

1.接口的理解和定义

2.接口实现数据回调

3.接口实现回调(中介租房)

一、接口的理解和定义

1.接口:一套协议,一套行为规范,是纯抽象类,所有成员函数都是抽象函数,所有成员变量都是public static final。设计程序时先定义接口,再实现类。任何需要在函数间传入传出的一定是接口而不是具体的类
2.使用interface表示定义一个接口,接口也可以继承多个接口(多个接口之间用逗号隔开),但不能继承类。interface是一种特殊的class。类可以实现很多接口,接口不能实现接口。
interface t1{
}
interface t2{
}
public interface DataIteration extends t1,t2{
    
}
3.接口内部元素:①接口不能被实例化(没有构造方法) ②接口里面可以定义变量,但只能是静态成员变量(默认修饰符 public static final),用这种方式替代枚举
4.方法:抽象方法(不需要自己实现,谁用谁就实现),默认修饰符(public abstract),使用implements实现接口,必须实现接口里面定义的方法,接口里面的方法都是抽象方法
public class MacBook implements DataIteration{

    @Override
    public void input() {
        System.out.println("苹果电脑安全输入");
    }

    @Override
    public void output() {
      System.out.println("苹果电脑流畅输出");
    }
}
5.内部接口:如果不想实现接口里的所有定义的方法,可以在接口里面定义一个内部接口,那么在子类调用接口时可以有选择的继承哪一个接口,以下为定义内部接口
public interface DataIteration {

   interface Output{
       void output();
   }
    interface Input{
        void input();
    }
}
以下为继承内部接口的方法
public class Mouse implements DataIteration.Output{

    @Override
    public void output() {
        System.out.println("鼠标输入坐标位置:东经38°,北纬55°");
    }
}
注:只继承了一个内部接口

二、接口实现数据回调

1.定义一个接口,统一返回数据的方式
public interface OnHttpfinishedlistener{
        void onSuccess(String img);
        void onFailure(String err);
    }
2.定义一个变量接收谁来监听网络下载完毕的事件
 private OnHttpfinishedlistener Listener;
3.设置提供set方法,保持当前的监听者
public void SetListener(OnHttpfinishedlistener Listener){
        this.Listener=Listener;
    }
4.任务结束,回调数据
 public void GetData(String uri){
      System.out.println("开始下载。。。");
      System.out.println("图片下载完毕。。。");

      //任务结束,回调数据
        Listener.onSuccess("你的图片下载成功");

    }
5.必须实现接口内部所有的抽象方法
 @Override
    public void onSuccess(String img) {
    System.out.println("展示图片:"+img);
    }

    @Override
    public void onFailure(String err) {
    System.out.println("下载失败"+err);
    }
6.定义一个Http类,传递当前对象给功能类,再调用功能类完成功能
 public SplashView(){
       //开始下载数据

       Http http=new Http();
       //6.必须传递当前对象给功能类
       http.SetListener(this);
       //7.调用功能类完成功能
       http.GetData("www.baidu.com");
    }
7.在主类里面创建一个新的类,它会自动调用默认构造方法,完成以上的一系列操作
public class MyClass {
    public static void main(String[] args) {
        SplashView sv=new SplashView();
    }
}

三、接口实现回调(中介租房)

1.创建一个中介类,在里面写一个租房方法,然后定义要租房的对象,因为用private修饰,所以使用set方法间接访问该成员变量。用接口实现代理设计模式
public class Agent {
    private Person FuPo;
    private Dog KeJi;

    public void RantHouse() {
        System.out.println("我是中介,开始找房源");
        System.out.println("找到房子了");
        if (FuPo != null) {
            FuPo.CallbackUseQQ("你好");
        }
        if (KeJi != null) {
            KeJi.CallbackUsePhone();
        }
    }
        public void setFuPo (Person FuPo){
            this.FuPo = FuPo;
        }
        public void setKeJi (Dog KeJi){
            this.KeJi = KeJi;
        }
    }
2.定义一个Person类,说明要租房的是人,在这里面先写一个方法来找房子,再自己定义一个接收方法
public class Person {
    public void NeedOneHouse(){
       //找一个中介完成租房功能
        Agent agent =new Agent();
        //告诉他有结果了返回给谁
        agent.setFuPo(this);
        //开始找房
        agent.RantHouse();
    }

    //自己定义一个接收的方法
    public void CallbackUseQQ(String msn){
        System.out.println("辛苦了");
    }
}
3.定义一个Dog类,原理类似Person类
public class Dog {
    public void wangwang(){
        //找中介
        Agent zs =new Agent();
        //告诉它返回给谁
        zs.setKeJi(this);
        //开始找房
        zs.RantHouse();
    }

    public void CallbackUsePhone(){
        System.out.println("wangwang");
    }
}
4.最后在主函数里面分别定义一个Person 和Dog对象,再分别调用里面的找房方法实现找房功能
public class MyClass {
    public static void main(String[] args) {
        Person jia=new Person();
        jia.NeedOneHouse();
        Dog dahuang=new Dog();
        dahuang.wangwang();
    }
}
5.对于功能类(此处指Agent类)来说:①每增加一个使用者就需要添加一个成员变量保存(此处指Person成员FuPo和Dog成员KeJi)解决方法:使用多态,用接口类型的变量 接收所有子类类型
public class Agent {
    private OnAgentFinishListener Listener;
    public interface OnAgentFinishListener{
        void UnFinish(String des);//抽象方法定义
    }
    public void RentHouse(){
        System.out.println("我是中介,开始找房源");
        System.out.println("找到房子了");
        //回调数据
        if(Listener!=null){
           Listener.UnFinish("四合院");
        }
    }
     public void SetListener(OnAgentFinishListener Listener){
        this.Listener=Listener;
    }
}
②写一个set方法设置对象(此处指setFuPo和setKiJi方法) ③判断并调用相应的方法接收数据(此处指RantHouse里if语句包含的方法)
6.对于使用者来说:①必须自己定义一个方法接收数据(此处指CallBackUseQQ和CallBackUsePhone方法)解决办法:定义接口,接口中规范接收的方式
public class Agent {
    public interface UnAgentFinishListener{
        void UnFinish(String des);
    }}
OK,以上就是今天的全部内容了,再见!

相关文章

  • Java基础(4)——接口interface

    本节内容1.接口的理解和定义2.接口实现数据回调3.接口实现回调(中介租房) 一、接口的理解和定义1.接口:一套协...

  • Java基础教程之接口的继承与抽象类

    Java基础教程之接口的继承与抽象类 在实施接口中,我们利用interface语法,将interface从类定义中...

  • Java基础-10 接口interface

    接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被...

  • scala的Trait

    Trait基础 scala 中的Trait和Java中的接口(interface)极其类似 接口是彻底的抽象类,所...

  • Java接口(interface)

    Java接口(interface) 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方...

  • android JNI NDK入门

    1、JNI(Java Native Interface) Java本地接口,又叫Java原生接口。它允许Java调...

  • JNI 入门

    基础知识 1 什么是JNI?JNI全称为:Java Native Interface。JNI 是本地编程接口,它使...

  • JNI&NDK

    JNI: Java Native Interface (Java本地接口,本地接口即C和C++开发的接口) → 调...

  • 接口和抽象类有什么区别

    学习Java基础知识,打通面试关~十三接口与抽象类面试常客:谈谈你对抽象类和接口的理解 接口用interface修...

  • JNI-Linux

    JNI是Java Native Interface的缩写,Java源生接口/本地调用/本地接口,允许Java和其他...

网友评论

      本文标题:Java基础(4)——接口interface

      本文链接:https://www.haomeiwen.com/subject/fxwjuhtx.html