当前课程知识点:Java程序设计 >  第四章 接口与多态 >  4.2.3-方法的查找 >  方法的查找

返回《Java程序设计》慕课在线视频课程列表

方法的查找在线视频

方法的查找

下一节:多态的概念

返回《Java程序设计》慕课在线视频列表

方法的查找课程教案、知识点、字幕

大家好

欢迎回来继续学习

JAVA语言程序设计

在这一节中我们将学习方法的查找

那么什么是方法查找呢

在上一节中

我们学了关于类型转换的

一些概念和方法

我们知道可以将子类类型的引用

向上转型为超类类型的引用

那么当发生了引用变量的

类型转换以后

如果这个引用变量

它转换前所属的类型

和它转换以后说属的类型中

都声明了同样原型的方法

那么在发生类型转换之后

再通过这个引用

去调用或者去访问这个方法

它将访问哪个方法体呢

将调用哪个方法体呢

这就是关于方法查找的问题

方法查找呢

又分成实例方法查找

和类方法查找

首先我们通过这个图

来看一下实例方法查找

我们知道所谓实例方法呢

就是那个非静态的方法

属于每个对象的方法

那么实例方法查找呢

它是创建对象的时候那个类开始

沿着类的继承层次向上查找

那我们来看这个例子

在这里构造了一个manager对象

它得引用赋给man这个引用变量了

又构造了一个employee对象

它的引用赋给emp1这个对象了

接下来呢我们来看

作为一个强制类型转换

将manager引用man

强制转换成employee引用

值值给emp2这个引用变量

接下来我们看通过这几个引用

去调用computepay方法

每一次分别调用的是哪个类里面

定义的computepay的方法体

我们看在employee中

定义了computepay方法

在manager中也定义了computepay方法

那第一次在通过emp1这个引用

去调用computepay方法的时候

我们看一下这个引用

它是employee类型的

它实际指向的对象呢

也是employee类型的

那显然没有任何的疑问

肯定是调用了employee类中的

computepay方法体

那第二次调用的时候呢

通过man这个引用

调用computepay方法

man是manager类型的引用

它指向的实际对象也是manager对象

所以也没有任何疑问

调用的就是manager中的

computepay方法

看第三次调用我们用emp2这个引用

去调用computepay方法

这个引employee类型的

但是它所实际指向的对象

是manager类型的对象

我们是将一个manager引用

强制转换类型

转换为employee去赋值给它的

所以它指向的

它关联的这个对象

实际上是一个manager对象

在这种情况下

它应该什么呢

从对象创建的时候的所属的类

这个对象是什么类呀

是manager类的

所以它从这个地方开始

从manager类开始

找有没有computepay方法

有的话就用manager类的

没有再向上找

那么一找呢

在manager类里面就有computepay方法

所以这个时候调用的是

manager类中的这个computepay方法

接下来我们再看类方法的查找

类方法呢

它是属于整个类的

是static是静态方法

在这里我们这个例子中呢

是在employee这个类中

定义了这个静态的expenseAllowance方法

在manager类中也有

这个静态的expenseAllowance方法

那跟刚才那个例子

同样我们也是构造了manager对象

将它的引用赋值给man引用

构造employee对象

将它的引用赋值emp1引用

然后再将这个man引用

强制转换为employee类型

去初始化这个emp2

那这个时候

我们通过emp2

去调用expenseAllowance方法的时候

会调用哪个呢

注意类方法的查找

跟实例方法的查找不一样

因为类方法它不属于任何一个对象

它属于整个类

所以在执行的时候

就不可能根据这个引用

所指向的对象是谁来查找这个方法了

因为方法本身就不属于任何一个对象

所以这个时候唯一可以参照的

是什么呢

就是看这个引用变量

它自己是什么类型

现在我们看到这个emp2呢

它自己是属于employee类型

所以通过emp2

去调用expenseAllowance

当然就调用了employee类型的

expenseAllowance方法

所以类方法的查找呢

总是在引用变量声明的时候

所属的类中进行查找

在这一节中呢

我们介绍了方法查找的概念

并且分为实例方法查找

和类方法查找两个方面

给大家介绍了

当发生了引用类型的转换之后

通过引用去访问类的方法的时候

在什么情况下

会访问哪个类中定义的方法

好 这一节内容就是这样

Java程序设计课程列表:

第一章 Java语言基础知识

-1.0-导学

--1.0-导学

--JDK的安装与配置01

--JDK的安装与配置02

--JDK的安装与配置03

--编辑并执行第一个java程序01

--编辑并执行第一个java程序02

--编辑并执行第一个java程序03

--eclipse的安装和配置01

--eclipse的安装和配置02

--eclipse的安装和配置03

--使用eclipse进行Java的开发01

--使用eclipse进行Java的开发02

--使用eclipse进行Java的开发03

-1.1-Java与面向对象程序设计简介

--1.1.1 Java与面向对象程序设计简介

--第一章 Java语言基础知识--1.1-Java与面向对象程序设计简介

-1.2-基本数据类型与表达式

--1.2.1-基本数据类型与表达式

-第一章 Java语言基础知识--1.2-基本数据类型与表达式

-1.3-数组

--1.3.1-数组

-第一章 Java语言基础知识--1.3-数组

-1.4-算法的流程控制

--1.4.1-算法的流程控制

--第一章 Java语言基础知识--1.4-算法的流程控制

-1.5-第一章小结

--1.5.1-第一章小结

-第一章编程练习题

-课件

--外部链接

第一章续-习题讲解视频

-Java环境配置、Eclipse使用、Helloworld程序详解

--JAVA的安装和配置

--编写并执行第一个Java程序及Java的跨平台性

--eclipse的安装和配置

--使用eclipse建立Java项目、编写和运行Java程序

--Java注释和Eclipse中的注释操作

--详解HelloWorld程序

-Java数据类型

--Java数据类型介绍

--Java整数类型

--Java浮点类型

--Java字符类型和布尔类型

--数据类型实战

--数据类型转换

--Java强制类型转换精度损失示例与表达式中的数据类型转换

-Java数组

--Java数组介绍、声明与使用

--一维数组的初始化与length属性

--数组索引的原理与使用

--二维数组的介绍与使用

-Java变量

--Java的变量

-命令行参数

--命令行参数的介绍

第二章 类与对象

-2.0-导学

--2.0-导学

-2.1-面向对象方法的特性

--2.1-面向对象方法的特性

--第二章 类与对象--2.1-面向对象方法的特性

-2.2-1-类声明与对象创建

--2.2-1-类声明与对象创建

--第二章 类与对象--2.2-1-类声明与对象创建

-2.2-2-数据成员

--2.2-2-数据成员

--第二章 类与对象--2.2-2-数据成员

-2.2-3-方法成员

--2.2-3-方法成员

--第二章 类与对象--2.2-3-方法成员

-2.2-4-包

--2.2-4-包

--第二章 类与对象--2.2-4-包

-2.2-5-类的访问权限控制

--2.2-5-类的访问权限控制

--第二章 类与对象--2.2-5-类的访问权限控制

-2.3-1-对象初始化

--2.3-1-对象初始化

--第二章 类与对象--2.3-1-对象初始化

-2.3-2-内存回收

--2.3-2-内存回收

--第二章 类与对象--2.3-2-内存回收

-2.4-枚举类

--2.4-枚举类

--第二章 类与对象--2.4-枚举类

-2.5-应用举例

--2.5-应用举例

-2.6-第2章小结

--2.6-第2章小结

-第二章编程练习题

-课件

--第二章课件

第三章 类的重用

-3.0-导学

--3.0-导学

-3.1.1-3.1.2-类继承的概念和语法

--3.1.1-3.1.2-类继承的概念和语法

--第三章 类的重用--3.1.1-3.1.2-类继承的概念和语法

-3.1.3-隐藏和覆盖

--3.1.3-隐藏和覆盖

--第三章 类的重用--3.1.3-隐藏和覆盖

-3.2-Object 类

--3.2-Object 类

--第三章 类的重用--3.2-Object 类

-3.3-终结类与终结方法

--3.3-终结类与终结方法

--第三章 类的重用--3.3-终结类与终结方法

-3.4-抽象类

--3.4-抽象类

--第三章 类的重用--3.4-抽象类

-3.5-泛型

--3.5-泛型

--第三章 类的重用--3.5-泛型

-3.6-类的组合

--3.6-类的组合

-3.7-小结

--3.7-小结

-第三章编程练习题

-课件

--课件

第四章 接口与多态

-4.0-导学

--导学

-4.1-接口

--接口

--第四章 接口与多态--4.1-接口

-4.2.1-4.2.2-类型转换

--类型转换

--第四章 接口与多态--4.2.1-4.2.2-类型转换

-4.2.3-方法的查找

--方法的查找

--第四章 接口与多态--4.2.3-方法的查找

-4.3-多态的概念

--多态的概念

--第四章 接口与多态--4.3-多态的概念

-4.4-多态的应用举例

--多态的应用举例

--第四章 接口与多态--4.4-多态的应用举例

-4.5-构造方法与多态性

--构造方法和多态性

--第四章 接口与多态--4.5-构造方法与多态性

-4.6-本章小结

--本章小结

-第四章编程作业

-课件

--课件

第五章 输入输出

-5.0-导学

--5.0-导学

-5.1.1-5.1.2-异常处理的概念

--5.1.1-5.1.2-异常处理的概念

--第五章 输入输出--5.1.1-5.1.2-异常处理的概念

-5.1.3-5.1.5-异常的处理

--5.1.3-5.1.5-异常的处理

--第五章 输入输出--5.1.3-5.1.5-异常的处理

-5.2-输入输出流的概念

--输入输出流的概念

--第五章 输入输出--5.2-输入输出流的概念

-5.3.1-写文本文件

--写文本文件

--第五章 输入输出--5.3.1-写文本文件

-5.3.2-读文本文件

--读文本文件

--第五章 输入输出--5.3.2-读文本文件

-5.3.3-写二进制文件

--写二进制文件

--第五章 输入输出--5.3.3-写二进制文件

-5.3.4-读二进制文件

--读二进制文件

-5.3.5-File类

--File类

-5.3.6-处理压缩文件

--处理压缩文件

-5.3.7-对象序列化

--对象序列化

-5.3.8-随机文件读写

--随机文件读写

-5.4-本章小结

--本章小结

-课件

--课件

第六章 对象群体的组织

-6.0-导学

--导学

-6.1-Java集合框架介绍

--Java集合框架介绍

--第六章 对象群体的组织--6.1-Java集合框架介绍

-6.2-主要接口及常用的实现类

--6.2-主要接口及常用的实现类

--第六章 对象群体的组织--6.2-主要接口及常用的实现类

-6.3-常用算法

--常用算法

-6.4-数组实用方法

--6.4-数组实用方法

-6.5-基于动态数组的类型(Vector, ArrayList)

--基于动态数组的类型(Vector, ArrayList)

-6.6-遍历Collection

--遍历Collection

-6.7-Map接口及其实现

--Map接口及其实现

-6.8-第6章小结

--第6章小结

-课件

--课件

第七章 图形用户界面

-7.0-导学

--导学

-7.1-绘图

--绘图

-7.2-Swing基础

--Swing基础

-7.3-Swing的层次

--Swing的层次

-7.4-布局管理

--布局管理

-7.5-内部类

--内部类

-7.6-事件处理的基本概念

--事件处理的基本概念

-7.7-事件派发机制

--事件派发机制

-7.8-顶层容器

--7.8-顶层容器

-7.9-中间层容器(一)

--7.9-中间层容器(一)

-7.10-中间层容器(二)

--7.10-中间层容器(二)

-7.11-原子组件(一)

--7.11-原子组件(一)

-7.12-原子组件(二)

--7.12-原子组件(二)

-7.13-原子组件(三)

--7.13-原子组件(三)

-7.14-其它Swing特性

--7.14-其它Swing特性

-7.15-第7章小结

--7.15-第7章小结

-课件

--课件

方法的查找笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。