精华内容
下载资源
问答
  • 接口的用法

    2018-02-10 11:27:19
    对于安卓开发者来说,接口大家平时都有接触过,按钮点击事件就是一个接口回调事件,那么大家知道如何自己定义一个接口,来提供给外部使用吗?提到接口,我们先来分析一下什么时候可以用到接口,先来谈第一种情况,...

    对于安卓开发者来说,接口大家平时都有接触过,按钮的点击事件就是一个接口回调事件,那么大家知道如何自己定义一个接口,来提供给外部使用吗?提到接口,我们先来分析一下什么时候可以用到接口,先来谈第一种情况,打个比方,我们在家里装了一个监控,我们在监控做了一些设置,如果有小偷进来,监控就会向我们的手机发送报警讯息,这里,按钮对象就像我们的家,OnClickListener代表监控,setOnClickListener表示安监控这个动作,onClick方法是监控发现小偷进来了,我们可以在这里对监控做报警设置,转换成代码就是home.setMonitor(new Monitor( public void  thiefCome( send message( ) )));

    下面给大家演示一个完整的代码过程

    1.接口方法用于回调 (这里定义接口是为了使用其接口方法):

    //此处定义一个接口,该接口为抽象类,里面
    //定义方法,但未实现具体逻辑
    public interface ICallback { 
       public void func(); 
    } 
    
    public class Caller { 
        //在一个类里定义一个接口
        ICallback callback; 
        
        //当doCallback方法被调用时,接口方法被调用
        public void doCallback() { 
     	  callback.func(); 
        } 
        //通过外界传入一个接口对象	   
        public void setCallback(ICallback callback) { 
        this.callback = callback; 
        } 	   
    } 
    public class MainClass { 
      public MainClass() { 
      } 	   
    
    public static void main(String[] args) { 
       Caller caller = new Caller(); 
       caller.setCallback(new ICallback () { 
       public void func() { 
       System.out.println("dosth"); 
       } 
     }); 
    
       caller.doCallback(); 
    
       } 
    }
    以上演示的是第一种情况,还有一种情况就是向上转型,这一点和定义父类继承很像,但是我们知道,子类只能继承一个父类,不能实现多继承,但是接口是可以多实现的,这个不难,大家看我给的例子就能明白第二种用法

    2.接口用于向上转型

    interface People{ 
    void peopleList(); 
    } 
    
    
    class Student implements People{ 
        public void peopleList(){ 
           System.out.println("I’m a student."); 
        } 
    } 
    
    class Teacher implements People{ 
        public void peopleList(){ 
            System.out.println("I’m a teacher."); 
        } 
    } 
    
    
    public class Example{ 
       public static void main(String args[]){ 
       People a;             //声明接口变量 
       a=new Student();      //实例化,接口变量中存放对象的引用 
       a.peopleList();        //接口回调 
       a=new Teacher();     //实例化,接口变量中存放对象的引用 
       a.peopleList();       //接口回调 
       } 
    } 
    运行结果: 
    I’m a student. 
    I’m a teacher.

    OK,接口的用法就给大家介绍这么多,希望能给大家一些帮助

    展开全文
  • JAVA接口的用法

    2015-08-07 21:51:14
     原来我对JAVA接口的用法:   interface A{     public abstract void b();   }   //B类执行A接口并实现抽象方法b()   public calss B implements A{   public void
    首先,请先看一个简单的例子: 

        原来我对JAVA接口的用法: 

        interface A{ 
          
             public abstract void b(); 

         } 
       //B类执行A接口并实现抽象方法b() 
        public calss B implements A{ 

             public void b(){ 

            System.out.println("called"; 
         
        } 
       //C类进行方法调用 

       pubic class C{ 

        public C(){} 

        public call(){ 

          public A  a1 = new B(); 怪蜀黍 

          a1.b(); 
        } 

       //省略main方法, new C.call(); 
       } 
       代码大致是这种思想,也就是,用具体实现抽象方法的类来实例化接口类 

    ----------------------------- 
    实现类   实现类对象=NEW   实现类(); 
    实现类对象.实现类方法()   ; 
    与 
    接口=new   实现类 
    接口。实现类方法() 
    都可能实现同样的功能 

    ------------------------------------------- 
    Interface A { 
        abstract void f(); 


    class B implements A{ 
        void f(){ 
            //body; 
            ....... 
            ....... 
            //body end 
        } 


    public calss c { 
        public static void main(String[] args){ 
            B b = new B(); 
            A a = (A)b; 
            a.f(); 
        } 

    JAVA中 return的用法 
    我当时的问题是: 
        当A a = (A)b时,b发生了向上转型行为,故此时b被窄化,此时reference a  持有的对象应该只有其父接口中的函数有效,这是没有异议的,那么,当main中发生的调用 
    a.f()被执行时,真正唤起的函数式抽象函数f(),还是B中的f(). 

    经过参阅资料和我自己的验证,得到的结论是:a.f()最终唤醒了B中的f(); 

    通过思考和继续学习,我得到了如下的认识: 
        1、“向上转型”发生在编译期,子类被窄化后在型别上被视为其超类,窄化后在原子类中但不在其超类中的函数失效;但由其超类继承而来的接口依然可以被唤起。 
        2、子类向上转型后,其通过继承并覆写后的函数仍能被唤起,并能被准确识别及执行,即向上转型后的对象,其内有效的函数别调用时,能准确执行其自身未转型时的功能。 
    这个机制主要由java函数(非final函数)的“后期邦定”性质保障。 
        3、这个机制的优越处在于:当父类的一个接口函数被不同子类继承并覆写后,当个个子类通过向上转型时,只要唤醒父类接口,java虚拟机会自动准确的识别出究竟该调用那个具体的子类函数。 
        4、后期邦定依靠于执行期型别识别。这个概念我将于以后做出补充。 
        5、以上就是所谓的多态的一部分内容。 

    目前,我所了解到的多态带来的意义是: 
        开发变得容易些了,当很多不同的类要执行只有细小差别的功能的同名函数时,可以提供一个接口并暴露接口函数(那个细小差别函数的同名函数)作为公共接口函 数,其他不同的类可以继承并覆写那个接口,调用时,只需将这些类的对象向上转型,调用该接口即可,java机制会保证调用准确。这样做使得代码量减小,可 读性提高。 

    --------------------------------------------------- 

    可以应用java中的上转型对象,实现java编程的多态。 

        上转型对象不是父类创建的对象,而是子类对象的“简化”状态,它不关心子类新增的功能,只关心子类继承和重写的功能。
        当一个类有很多子类时,并且这些子类都重写了父类中的某个方法。 
    当使用上转型对象在调用这个方法时就可能具有多种形态。因为不同的子类在重写父类的方法时可能产生不同的行为。也就是说,不同对象的上转型对象调用同一方法可能产生不同的行为。 

        例如下面的程序你测试一下就可以理解这样的用法。 
    class Animal{ 
        void cry(){} 

    class Dog extends Animal{ 
        void cry(){ 
            System.out.println("Wang!Wang!......"); 
        }  

    class Cat extends Animal{ 
        void cry(){ 
            System.out.println("miao~~miao~~..."); 
        }  

    public class Example5_9{ 
        public static void main(String args[]){ 
            Animal animal; 
            animal=new Dog(); //animal是Dog对象的上转型对象 
            animal.cry(); 
            animal=new Cat(); //animal是Cat对象的上转型对象 
            animal.cry(); 
        } 


    ------------------------------------------------------------- 
    Java:接口回调与向上转型 

    1.接口回调是什么[2]? 

    接口回调是指:可以把使用实现了某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程称为对象功能的接口回调。看下面示例. 
    interface People { 
        void peopleList(); 

    class Student implements People { 
        public void peopleList() { 
           System.out.println("I’m a student."); 
        } 

    class Teacher implements People { 
        public void peopleList() { 
           System.out.println("I’m a teacher."); 
        } 

    public class Example { 
        public static void main(String args[]) { 
           People a; // 声明接口变量 
           a = new Student(); // 实例化,接口变量中存放对象的引用 
           a.peopleList(); // 接口回调 
           a = new Teacher(); // 实例化,接口变量中存放对象的引用 
           a.peopleList(); // 接口回调 
        } 


    结果: 
    I’m a student. 
    I’m a teacher. 

    再来看看向上转型(upcasting)的概念。 

    2.什么是向上转型[1]? 
    Shape s=new Circle(); 

    这里,创建了一个Circle对象,并把得到的引用立即赋值给Shape。通过继承,Circle就是一种Shape。 
    假设你调用基类方法(它已在导出类中被覆盖): 

    s.draw(); 
    由于后期绑定(多态),将会正确调用Circle.draw()方法。 
    3.Java中的跨类引用 
    在java里面,关于跨类引用,有两条规则应该记住: 
    1)如果a是类A的一个引用,那么,a可以指向类A的一个实例。或者说指向类A的一个子类,这是向上转型的情形。 
    2)如果a是接口A的一个引用,那么,a必须指向实现了接口A的一个类的实例。这是接口回调的情形。 
    在java里面,向上转型是自动进行的,但是向下转型却不是,需要我们自己定义强制进行. 

    class B extends A{} 
    public class A { 
        public static void main(String[] argts){ 
           A a1=new A(); 
           A a2=new B();//Upcasting 
           B b1=new B(); 
           B b2=(B) new A();//DownCasting 
        } 

    4.向上转型与接口回调的区别 
    从实现了某接口的对象,得到对此接口的引用,与向上转型为这个对象的基类,实质上效果是一样的。这些对象都可以调用基类型提供的方法,对于接口来 说就是回调接口中的方法,对于父类来说就是调用父类的方法。当然在向上转型的情况下,还牵涉到子类重写(Override)父类方法的情形。
    展开全文
  • Comparable接口的用法和实现 Comparable接口中只有一个方法,  public int compareTo(Object obj);  该方法:  返回0 表示this==obj;  返回正整数表示 this>obj;  返回负数表示this  实现了Comparable...

    Comparable接口的用法和实现

    Comparable接口中只有一个方法,
       public int compareTo(Object obj);
       该方法:
              返回0  表示this==obj;
              返回正整数表示  this>obj;
              返回负数表示this<obj
      实现了Comparable接口的类通过实现了compareTo方法从而确定该类对象的排序方式


    下面是java中代码的实现方式:


    import java.util.Collections;
    import java.util.ArrayList;
    import java.util.List;
    public class TestComparable {
    
    	public static void main(String[] args) {
    		List<Student> list=new ArrayList<Student>();
    		Student stu1=new Student(1,"张三",100);
    		Student stu2=new Student(3,"张四",80);
    		Student stu3=new Student(2,"张五",90);
    		list.add(stu1);
    		list.add(stu2);
    		list.add(stu3);
    		System.out.println(list);
    		Collections.sort(list);
    		System.out.println(list);
    
    	}
    }
    class Student implements Comparable<Student>{
    	int id;
    	String name;
    	int score;
    	public Student(int id,String name,int score){
    		super();
    		this.id=id;
    		this.name=name;
    		this.score=score;
    	}
    	public String toString(){
    		return id+" "+name+score;
    	}
    	public int compareTo(Student o){
    		if(this.score>o.score){
    			return 1;
    		}else if(this.score<o.score){
    			return -1;
    		}else{
    			return 0;
    		}
    	}
    }


    展开全文
  • Java中Enumeration接口的用法

    万次阅读 2014-02-11 17:27:38
    Java中Enumeration接口的用法 Enumeration是java.util中的一个接口类,在Enumeration中封装了有关枚举数据集合的方法,与Iterator差不多,用来遍历集合中的元素 但是枚举Enumeration只提供了遍历Vector和...

    Java中Enumeration接口的用法

    Enumeration是java.util中的一个接口类,在Enumeration中封装了有关枚举数据集合的方法,与Iterator差不多,用来遍历集合中的元素  但是枚举Enumeration只提供了遍历Vector和Hashtable类型集合元素的功能,这种类型的集合对象通过调用elements()方法获取一个Enumeration对象  然后Enumeratino对象再调用以下方法来对集合中的元素进行遍历。

    hasMoreElements():判断Enumeration对象中是否还有数据

    nextElement():获取Enumeration对象中的下一个数据

    实例如下:

    Enumeration req = request.getParameterNames();
     while (req.hasMoreElements()) {
         Object obj = (Object) req.nextElement();
         if (obj.toString().trim().equals("LastPage")) {   
             System.out.println("LastPage \n");
         } else if (obj.toString().trim().equals("NextPage")) {
            System.out.println("NextPage");
         }
     }

    展开全文
  • java接口的用法

    千次阅读 2019-01-11 20:44:44
    文章目录一、 接口特点:二、类和接口之间关系三、实例—俄罗斯方块: 一、 接口特点: 1、接口成员只能包括以下两种: (1)全局常量 public satic final double PI=3.14; (2)抽象方法 public abstract ...
  • Java中Cloneable接口的用法

    千次阅读 2013-08-22 15:44:18
    Java中Cloneable接口的用法 今天编写一个用到Cloneable接口的程序时才注意到原来clone()方法提供的是浅层拷贝,而不是我先前认为的深层拷贝。 class A implements Cloneable{  int a=1;  ArrayList b=...
  • GoLang - Go中接口的用法

    万次阅读 2020-07-22 22:51:29
    接口是定义了合约但并没有实现类型。举个例子: type Logger interface { Log(message string) } 那这样做有什么作用呢?其实,接口有助于将代码与特定实现进行分离。例如,我们可能有各种类型日志记录器: ...
  • java.sql.DatabaseMetaData接口的用法

    千次阅读 2016-11-21 09:06:26
    java.sql.DatabaseMetaData接口的用法 分类:Database  (834) (0) 举报 收藏 一 . 得到这个对象的实例 Connection con ; con = DriverManager.getConnection(url,userName,password); ...
  • 两个Activity之间传递数据的全部方法以及Parcelable接口的用法
  • Compareable接口的用法

    2019-08-02 16:31:14
    问题:什么时候返回1,-1,0? 举个例子说明: ... class Node2 implements Comparable<Node2>{ ...我记法: ...如果你不想交换两者顺序,就返回-1,类比成false,表示我不想调换顺序。  
  • 项目中接口的用法

    2020-03-02 22:49:18
    接口的使用: 接口会直接给你使用方法(接口示例) 发起ajax请求 $.ajax({ url: `http://www.xxxxxxx.php`, type: 'get', data: { username, password, } }).then(res =&...
  • 接口的总结: 1.接口本身 是一个特殊的类 2.接口的成员变量 默认是 public static final 修饰的,也就是说接口中的成员变量实际上是一个常量 3.接口中的 方法 都是抽象方法,默认修饰 public abstract 4.接口是...
  • redisCommand接口的用法--利用hiredis库获取MGET命令的结果的坑! 标签: redishiredis http://blog.csdn.net/tao_627/article/details/38685031 2014-08-19 17:29 3012人阅读 评论(3) 收藏 举报 ...
  • 标识接口的用法

    2013-01-22 14:01:28
    标识接口是没有任何方法和属性的接口。标识接口不对实现它类有任何语义上要求,它仅仅表明实现它类属于一个特定类型。 标接口在Java语言中有一些很著名应用,比如java.io.Serializable和java.rmi.Remote...
  • java 7 中 接口 的用法

    2017-07-18 13:31:08
    接口的定义:接口的访问权限不能是 private 或 protected,否则会报错 接口中的常量和其他类中的常量一样 接口中的方法都必须实现,否则会报错 接口的特性:  接口中的方法自动默认为 public  接口中的属性自动...
  • AbstractCollection是对Collection接口的方法的部分实现的便利类。AbstrictCollection没有实现size()和 iterator()方法。 size()和iterator()方法时候在继承了上述接口和类的子类中实现。 Collection接口...
  • java中接口的用法

    千次阅读 2017-08-15 15:27:44
    (1) 所有可以拨号设备都应该有拨号功能 (Dailup) (2) 所有播放设备都可以有播放功能(Play)。 (3) 所有照相设备都有拍照功能(takePhoto)。 (4) 定义一个电话类 Telephone,有拨号功能。 (5) 定义一个Dvd...
  • Spring中ApplicationContextAware接口的用法

    千次阅读 2017-07-08 16:23:27
    加载Spring配置文件时,如果Spring配置文件中所定义或者注解自动注入Bean类实现了ApplicationContextAware 接口,那么在加载Spring配置文件时,会自动调用ApplicationContextAware 接口方法: public void ...
  • Android中Parcelable接口用法   1. Parcelable接口   Interface for classes whose instances can be written to and restored from a Parcel。 Classes implementing the Parcelable interface must...
  • Enumeration是java.util中一个接口类,在Enumeration中封装了有关枚举数据集合方法,与Iterator差不多,用来遍历集合中元素 但是枚举Enumeration只提供了遍历Vector和Hashtable类型集合元素功能,这种类型...
  • c#接口的用法

    2013-07-10 11:20:20
    namespace 抽象类借口 { class Program { class Chinese:Walkable { public void Walk() { Console.WriteLine("pia pia");... class Bird : Flyable,Walkable/...C#里的接口 可以多个继承 与类 继承有所区别。
  • Android中定义接口的用法

    千次阅读 2016-07-08 23:24:45
    1、接口方法用于回调 (这里定义接口是为了使用其接口方法): public interface ICallback { public void func(); } public class Caller { ICallback callback; public void doCallback() { callback...
  • 1、接口方法用于回调 (这里定义接口是为了使用其接口方法): public interface ICallback { public void func(); } public class Caller { ICallback callback; public void doCallback() { ...
  • Externalizable接口继承了Serializable接口,用来在序列化时手动把需要对象信息进行序列化。  Externalizable接口提供了两个方法:writeExternal(ObjectOuput out) 和 readExternal(ObjectInput in)...
  • * 功能:通过对一个整形数组进行排序,来了解Comparator用法 * * @author wangchangshuai0010 山东科技大学 2013年2月7日 0:05 */ package test;import java.io.BufferedInputStream; import java.util.Arrays;...
  • Enumeration接口的用法

    千次阅读 2010-02-08 17:15:00
    Enumeration接口也在java.util包中 它功能与Iterator差不多 都是用来遍历集合中元素 但是枚举Enumeration只提供了遍历Vector和Hashtable类型集合元素功能 这种类型集合对象通过调用elements()方法获取一个...
  • ScheduledExecutorService,是基于线程池设计定时任务类,每个调度任务都会分配到线程池中一个线程去执行,也就是说,任务是并发执行,互不影响。 需要注意,只有当调度任务来时候,ScheduledExecutorService才会...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,811
精华内容 7,524
关键字:

接口的用法