向上转型

接口回调 类向上转型 向下转型 (java)

无人久伴 提交于 2020-05-01 22:00:40
1:接口回调 接口回调是指:可以把使用实现了某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程称为对象功能的接口回调。看下面示例。 interface People { void peopleList(); } class Student implements People { publicvoid peopleList() { System.out.println("I’m a student."); } } class Teacher implements People { publicvoid peopleList() { System.out.println("I’m a teacher."); } } publicclass Example { publicstaticvoid main(String args[]) { People a; // 声明接口变量 a = new Student(); // 实例化,接口变量中存放对象的引用 a.peopleList(); // 接口回调 a = new Teacher(); // 实例化,接口变量中存放对象的引用 a.peopleList(); // 接口回调 } } I’m a

Java三大特性之多态

橙三吉。 提交于 2020-04-06 02:32:27
一、概念 所谓多态,就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。 因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。 通俗来说,就是用父类来声明对象,而用子类来new对象。这依赖于“向上转型”,即由于子类是由父类继承而来的,所以new出的子类对象可以自动向上转型为父类。 当然这样的向上转型也有相应的缺陷,就是它必定会导致一些方法和属性的丢失,而导致我们不能够获取它们。所以父类类型的引用可以调用父类中定义的所有属性和方法,对于只存在与子类中的方法和属性它就望尘莫及了。 二、实现 1.实现条件 继承:在多态中必须存在有继承关系的子类和父类。 重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。 向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备技能调用父类的方法和子类的方法。 2.实现形式 继承 接口 3.多态的继承原则 当超类对象引用变量引用子类对象时

Java面试知识点(一)多态

你离开我真会死。 提交于 2019-11-28 14:51:53
多态概述 1. 定义 多态就是指程序中定义的引用变量所指向的 具体类型 和通过该引用变量发出的 方法调用 在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由 程序运行期间才能决定 。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以 让引用变量绑定到各种不同的类实现上 ,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。 2.例子 : class Base { public void method() { System.out.println("Base"); } } class Son extends Base { public void method() { System.out.println("Son"); } public void methodB() { System.out.println("SonB"); } } public class Test01 { public static void main(String[] args) { Base base = new Son(); base.method(); base.methodB(); } } 编译不通过 关于多态的问题