java 动态绑定 多态
继承链中对象方法的调用规则:当前类-->父类-->爷类-->..-->祖先类(只能向上找,不能向下找)
优先级:this.method(Obj) > super.method(Obj) > this.method((super)Obj) > super.method((super)Obj)
demo代码:
public class Polymorphic {
public static void main(String[] args) {
Son son=new Son();
Grandson grandson=new Grandson();
Grandson2 grandson2=new Grandson2();
son.method(); //this.method() 当前类Son有method(),就不在使用Father的method()了
grandson.method(); //super.method() 当前类Grandson没有method(),调用的是父类Son的method()
grandson.methods(); //Grandson和Son都没有methods(),向上找到Father的methods()
grandson.method(grandson); //this.method((super)Obj) 当前类以及父类中没有method(Grandson g),则找method(Son s)
grandson2.method(son); //super.method((super)Obj) Grandson2和Son都没有method(Son s),向上找到Father的method(Father f)
/* 结果:
* Son method()
Son method()
Father methods()
G S
F S
*/
Father father_son = new Son(); //声明了一个Father对象,但创建了一个Son对象,father_son是对象的引用,指向创建的Son对象
grandson.method(father_son); //结果:F F 因为参数代表的是声明的对象,并非创建的对象
}
}
class Father {
public void method(){
System.out.println("Father method()");
}
public void methods(){
System.out.println("Father methods()");
}
public void method(Father f){
System.out.println("F F");
}
public void method(Son s){
System.out.println("F S");
}
}
class Son extends Father{
public void method(){
System.out.println("Son method()");
}
}
class Grandson extends Son{
public void method(Son s){
System.out.println("G S");
}
}
class Grandson2 extends Son{
}
java 动态绑定 多态的更多相关文章
- Java JVM 多态(动态绑定)
Java JVM 多态(动态绑定) @author ixenos 摘要:绑定.动态绑定实现多态.多态的缺陷.纯继承与扩展接口.向下转型与RTTI 绑定 将一个方法的调用和一个方法的主体关联起来,称作( ...
- Java 动态绑定和多态
动态绑定和多态 动态绑定是指:"在执行程序期间(而非编译期间),判断引用所指对象的实际类型,调用其相应的方法." 动态绑定(多态)存在的条件 要有继承. 要有重写. 父类引用指向子 ...
- 关于java中多态的理解
java三大特性:封装,继承,多态. 多态是java的非常重要的一个特性: 那么问题来了:什么是多态呢? 定义:指允许不同类的对象对同一消息做出响应.即同一消息可以根据发送对象的不同而采用多种不同的行 ...
- 个人对Java中多态的一些简单理解
什么是多态 面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. 多态的定义:指允许不同类的对象对同一消息做出响应.即同一 ...
- Java中多态的一些简单理解
什么是多态 .面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. .多态的定义:指允许不同类的对象对同一消息做出响应.即 ...
- java动态绑定的情况分析
java是面向对象的语言,java中多态的一种情况是动态绑定.所谓的动态绑定,分两种情况:当调用类方法的时候,java虚拟机会基于对象的引用类型来选择执行方法.当java调用一个实例方法的时候,他会根 ...
- JAVA & C++ 多态
多态,也叫动态绑定. Java: class A { public void f1() { System.out.println("A:f1"); } public void f2 ...
- java的多态以及重载,重写,前期绑定,后期绑定
多态的定义: 一个类实例的相同方法在不同情形有不同表现形式.多态机制使具有不同内部结构的对象可以共享相同的外部接口.这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通 ...
- 深入Java核心 Java中多态的实现机制(1)
在疯狂java中,多态是这样解释的: 多态:相同类型的变量,调用同一个方法时,呈现出多中不同的行为特征, 这就是多态. 加上下面的解释:(多态四小类:强制的,重载的,参数的和包含的) 同时, 还用人这 ...
随机推荐
- python摸爬滚打之day29----socketserver实现服务端和多个客户端通信
什么是socketserver? TCP协议下的socket实现了服务端一次只能和一个客户端进行通信, 而socketserver实现了服务端一次能和多个客户端进行通信, 底层调用的还是socket. ...
- python 去掉重复元素 学到再添加
1. python 内置函数 set(可迭代对象) 返回无重复元素的集合.如在分类中,classification为类别数组 set(classification)为类别数 2.numpy np.un ...
- windows red5相关
red5部署 前段时间把red5服务器搭建好了,现在记录下是如何搭建的.1,下载对应版本的red5https://github.com/Red5/red5-server/releases2,如果没有安 ...
- 《图解HTTP》读书笔记(二:各种协议与HTTP协议之间的关系)
涉及到DNS协议.TCP协议.IP协议,话不多说,上图:
- btcpool之GbtMaker
一.简介 GbtMaker全称getblocktemplate maker,它通过getblocktemplate rpc接口从bitcoind获得挖矿所需数据,然后把该数据发送到kafka消息队列. ...
- 怎么eclipse或MyEclipse中添加javaSe的源码
怎么eclipse或MyEclipse中添加javaSe的源码 有时在eclipse里我们调用java提供给我们的方法,我们有时需要查看java提供给我们的调用方法的源码或java提供给我们的核心类的 ...
- Jsoup解析XML
先导入jsoup.jar 包 方法1:不推荐,了解即可 方法 方法3: 后期学习主流
- 深入了解webpack前,可以了解的小知识点。
阅读前:文章大概是写,简单用过webpack,想继续深入了解webpack前需要了解的知识.但文章内容跟webpack使用关系并不大. 文章概要: Object.defineProperty call ...
- 惨痛第十届蓝桥杯总结(附录蓝桥省赛知识点总结)-C++ B组
虽然目前距离蓝桥省赛仅仅过去一天但昨天下午和大神对答案的感觉依旧..... 现在深刻里理解到了为啥大神老是说咱们蓝桥叫 阅读理解杯(现在我非常认同这种说法啊...) 虽然第一次参加,赛前紧张提前30分 ...
- eslint的安装与使用
什么是 ESLint ESLint(中文站点)是一个开源的 JavaScript 代码检查工具,使用 Node.js 编写,由 Nicholas C. Zakas 于 2013 年 6 月创建.ESL ...