`
water84222
  • 浏览: 375362 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

向上转型与接口回调的区别

 
阅读更多

1 .接口回调是什么

接口回调是指:可以把使用实现了某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程称为对象功能的接口回调。看下面示例。
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 .什么是向上转型
 
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 )父类方法的情形。
  
分享到:
评论

相关推荐

    Java编程接口回调一般用法代码解析

    2. 网络编程:在网络编程中,接口回调可以用于处理服务器的响应,例如,在客户端与服务器之间的通信中,可以使用接口回调来处理服务器的响应。 3. 线程编程:在线程编程中,接口回调可以用于处理线程之间的通信,...

    浅谈Java中向上造型向下造型和接口回调中的问题

    浅谈Java中向上造型向下造型和接口回调中的问题 Java 中的向上造型、向下造型和接口回调是 Java 编程中非常重要的概念。下面我们将对这三个概念进行详细的介绍。 向上造型(Upcasting) 向上造型是指将子类对象...

    java 考试(2).docx

    本资源涵盖了 Java 程序设计的基础知识点,包括类的定义和使用、接口的定义和使用、接口类型参数的使用、接口回调和向上转型等。这些知识点都是 Java 程序设计的基础概念,对于 Java 开发者来说非常重要。

    java2 使用教程(第三版) 实验指导 上机实践4 继承与接口

    接口回调是指通过接口调用方法,通常用于事件处理或回调机制,使得不同的类可以以统一的方式交互。 在实验指导的"上机实践4"部分,你可能会遇到创建和使用继承、上转型对象以及接口的实例。例如,你可能需要定义一...

    C# 实例化接口对象的方法

    一、接口回调 这就是继承中的向上转型。父类 FL=new 子类();只不过这里的父类就是interface接口。(个人认为这里不管是class的override还是interface的重写,都是一样的用法) 可以把实现某一接口类创建的对象的引用...

    Java的多态性

    2. **接口回调**:在GUI程序设计中,常常使用多态来处理事件监听器的回调方法,这样可以编写更加通用的代码。 3. **策略模式**:策略模式利用多态来实现算法的动态选择,允许用户在运行时动态替换算法的具体实现。 ...

    javaSE学习笔记

    接口回调和接口作为参数是多态性的重要体现,它们确保了调用者可以调用子类实现的具体方法,而无需知道具体的子类类型。 在给定的代码示例中,`Char`是一个抽象类,包含一个抽象方法`speak()`。`AA`和`BB`类分别...

    java程序员面试题20道.pdf,这是一份不错的文件

    - 过滤器基于函数回调,适用于Servlet容器,可处理多种类型的请求。 - 拦截器先于过滤器执行。 13. **Mybatis ResultMap与ResultType**: - ResultType简单地映射查询结果到指定类型,要求字段名与实体类属性名...

    JAVA 笔记-------------------

    同时,内部类也可以作为实现策略模式或回调函数的一种方式。 5. **单态模式**:单态模式是一种设计模式,确保一个类只有一个实例,并提供全局访问点。在Java中,通常通过私有构造函数和静态工厂方法来实现单例。...

    多态详解= 多态的优缺点在不同的编程场景中不同的适用性

    3. **回调机制**:多态性可用于实现回调机制,其中一个对象将自身的引用传递给另一个对象,以便在适当的时间调用回调方法。这种机制常用于事件处理、异步编程和触发式操作,有助于提高程序的响应性和灵活性。 #####...

    java判断题.docx

    接口回调允许将实现接口的类的对象引用赋给接口变量,这样就可以通过接口调用其实现的方法。参数为接口类型的方法可以接受任何实现该接口的类实例。 Java程序由类定义组成,每个程序可以有多个类,但只有一个主类,...

    Linux C 学习笔记

    Linux C 学习笔记主要涵盖了C语言在Linux环境下的编程要点,包括指针、代码分支、类型转换、指针与数组、回调函数以及函数指针类型转换等方面的知识。以下是这些知识点的详细说明: 1. **指针的长度**:在32位系统...

    AmazonPolimorfismo:使用多态实现 Amazon 类

    7. **接口回调**:Amazon类可能通过实现接口并提供回调方法来处理事件,如订单创建、支付成功等。这样,不同的产品类型可以根据自身特性来响应这些事件,实现运行时多态性。 8. **动态代理**:为了增加额外的功能,...

    java2实用教程

    4.13 接口:讲解了接口的声明、实现以及接口回调的概念。 4.14 JAR文件:介绍了如何将Java应用程序和类压缩成jar文件。 第五章:数组与字符串 5.1 声明数组:演示了如何声明和创建Java数组。 5.2 创建数组:展示了...

    Java基础入门教程 含习题 第04章 面向对象(下)(共66页).pptx

    - **对象的类型转换**:可以将子类对象向上转型为父类对象,也可以将父类引用指向子类对象,实现方法的多态调用。 - **Object类**:所有的类都默认继承自`Object`类,它提供了如`equals()`、`toString()`等通用...

    Wrox - Beginning C# 3.0 (May 2008)

    7. **泛型协变和逆变**:这些特性增强了泛型接口和委托的灵活性,使得类型可以更安全地向上转型或向下转型。 8. **预处理器指令增强**:C# 3.0增强了预处理器指令,如`#region`和`#endregion`用于组织代码,`#if`、...

    java入门基础教程ppt

    匿名内部类可以直接定义在需要的地方,无需命名,通常用于简洁地实现回调或事件监听器。 在实际编程中,理解并熟练运用这些概念是成为合格Java开发者的基石。通过不断练习和项目实践,你将能够更好地掌握面向对象...

    学习安卓所需要的java知识点

    - **对象的向上转型和向下转型**:向上转型是指将子类对象赋值给父类引用;向下转型则是将父类引用转换为子类引用。 - **接口与抽象类**: - **定义方法**:接口使用`interface`关键字定义;抽象类使用`abstract ...

    JAVA超详细教程

    - **接口回调**:实现接口后,可以通过接口引用调用其实现类的方法。 - **4.14 JAR 文件** - **将应用程序压缩为jar文件**:使用jar工具将多个类文件打包成一个文件。 - **将类压缩成jar文件**:类似地,将单个...

Global site tag (gtag.js) - Google Analytics