java 绑定属性_Java的动态绑定

看这段代码

Father father = new Son();

父类引用指向子类对象,这是java的多态特性,有多态引到动态绑定,如何引入呢,看这个代码:

classFather{privateString nameString;public voidspeak() {

System.out.println(this.getClass()+"父类My name is:"+this.nameString);

}publicFather() {};publicFather(String nameString) {this.nameString =nameString;

}

}class Son extendsFather{privateString nameString;publicSon(String nameString) {this.nameString =nameString;

}public voidspeak() {

System.out.println(this.getClass()+"子类My name is:"+this.nameString);

}

}

Father father = new Son("黄山");

father.speak();

执行的结果是

class Son子类My name is:黄山

定义的是父类引用,但是这个引用指向了堆上的子类对象Son,执行的是子类的speak,并没有执行父类的。所谓的动态绑定就是指的这个:

方法在运行时候根据具体指向的对象来确定。

这是我的理解。

静态绑定:

与动态绑定相对的是静态绑定,所谓静态绑定就是方法在程序运行前就已经确定。java的静态绑定可以简单理解为程序编译期间的绑定。java当中的方法只有final,static,private和构造方法是静态绑定。

动态绑定与静态绑定另外有一种说法是前期绑定与后期绑定。

可见java的向上转型与多态是通过动态绑定来实现的。语言实现了后期绑定,同时必须提供一些机制,可在运行期间判断对象的类型,并分别调用适当的方法。

动态绑定只针对方法而不针对属性:

看程序:

public classJavaDt {/***@paramargs*/

public static voidmain(String[] args) {//TODO 自动生成的方法存根

Father father = newSon();

father.speak();

System.out.println(father.nameString);

}

}classFather{public String nameString = "父类属性";public voidspeak() {

System.out.println(this.getClass()+"父类My name is:"+this.nameString);

}publicFather() {};publicFather(String nameString) {this.nameString =nameString;

}

}class Son extendsFather{public String nameString = "子类属性";public voidspeak() {

System.out.println(this.getClass()+"子类My name is:"+this.nameString);

}

}

执行结果是:

class Son子类My name is:子类属性

父类属性

father.name 读取的是父类的属性。

如果想访问父类属性只要将属性包装成方法就可以了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567254.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中软python编码规范考试试题_卓越分享 | 如何写出一手漂亮的Python代码?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼Python语言这么火,有很多同学是从其他语言转行过来的(比如c,java语言),多多少少写代码的时候也会受其他语言的影响!而对于刚开始学编程的小白同学来说,解决问题的思路有的…

间接寻址级别不同_被遗忘的利息税,国债与存款的利率区别,同大额存单的4点大不同...

2020年6月10日的储蓄式电子国债发行又一次与理财人擦肩而过,因为疫情管控原因,此次暂时不发行,那么下一个认购国债的窗口,就是7月10日,仍然是储蓄式电子国债,期限还是3年期和5年期两种。那么能如期发行吗&a…

java宠物健康值_宠物健康微手册:成年篇

在健康微手册幼年篇之后,成年篇也出炉了。这里所说的成年,也就是从1岁起,到大型犬的6岁左右,或者小型犬或猫猫的10岁左右。老年宠物的注意事项就留到下次再讲吧。身体检查:每年一到两次的身体检查很重要。小宠物不能告…

python定义数列每项的变量__Python定义方法

def 定义一个方法在项目编程中,我们往往要做很多重复的事,比如一个排序的功能(当然Python中内置排序的方法),在编程中,我们肯定是会多次用到这个功能的,如果我们每次都在要用这个功能时,都去写一遍&#xf…

java 变参 使用数组调用_java中的可变参数使用方法

java中的可变参数使用方法可变参数时Java 1.5新增的方法,可变参数方法接收0个或者多个指定类型的参数,可变参数机制通过先创建一个数组,数组的大小为在调用位置所传递的参数数量,然后将参数值传到数组中,最后将数组传递…

python课程水平测试成绩查询_学业水平考试成绩查询系统入口

学业水平测试是对高中生在校期间学习情况的全面检测。学业水平测试、语数外科目考试、综合素质评价,共同构成完整的高中学生综合评价体系。学业水平考试成绩如何查询1、网站查询:通过百度或输入网址,进入学业水平测试成绩查询的官网&#xff…

lamp配置python_LAMP搭建笔记

LAMP简介LAMP指的Linux(操作系统)、ApacheHTTP 服务器,MySQL(有时也指MariaDB,数据库软件) 和PHP(有时也是指Perl或Python) 的第一个字母。LAMP便成了一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为…

抽象类可以用new创建对象吗_宠物可以用人类的湿巾吗?猫咪有泪痕可以用纸巾擦掉吗?...

宠物还有专用的湿巾?当然喽!不养宠物的小伙伴可能是无法理解的,人类的生活条件好了,宠物的生活条件在很多方面比人类还更上一层台阶呢!喜欢逛宠物店和宠物展的小伙伴都会有这样的感慨,那就是人生不如喵生狗…

java什么时候需要同步_JAVA中线程在什么时候需要同步和互斥

JAVA中线程在什么时候需要同步和互斥关注:265 答案:6 mip版解决时间 2021-01-27 08:10提问者时光易老2021-01-27 03:32JAVA中线程在什么时候需要同步和互斥?(假如这题是考试题,要怎样回答?)详细点最佳答案二级知识专家樱花雨梦2021-01-27 04:13例如访…

5g虚拟技术旅游_5G造就文旅新时代,驴迹科技探索智慧出行创新领域

随着我国5G技术的成熟与普及,5G为文旅产业提供新的解决方案,使之焕发新的活力。以5G“新基建”为依托,结合VR虚拟实境以及云计算、高清视频等技术交叉应用,对旅游业的发展带来广泛而深刻的影响,给游客更新鲜、更具有科…

java静态方法库api下载_Java——静态方法库和抽象数据类型

静态方法封装了由一系列语句所描述的算法。方法需要参数并根据参数计算出来的某种数据类型的返回值(int等)或者产生某种副作用(void)。实例如下&#xff1a;//实例1public static int abs(int x) //计算一个整数的绝对值{if(x<0)return -x;else return x;}//实例2public sta…

图解leetcode初级算法python版 pdf_图解LeetCode初级算法(Python版)

第1章 浅谈算法1&#xff0e;1 算法概述1&#xff0e;2 度量算法1&#xff0e;2&#xff0e;1 时间复杂度1&#xff0e;2&#xff0e;2 空间复杂度1&#xff0e;3 Python&Pythonic第2章 基础算法之排序2&#xff0e;1 冒泡排序2&#xff0e;1&#xff0e;1 原理2&#xff0…

java指定sql生成xml_SQL Server根据查询结果,生成XML文件

/*bcp 不是内部或外部命令&#xff0c;也不是可运行的程序&#xff1f;看看在C:\Program Files\Microsoft SQL Server\80\Tools\Binn里面有没有bcp.exe这个文件然后看看path里面加C:\Program Files\Microsoft SQL Server\80\Tools\Binn这个目录没有.右键我的电脑--属性--高级--…

python实现雪花飘落的效果_使用javascript实现雪花飘落的效果

看了javascript网页特效实例大全中的图片飘下的效果实例&#xff0c;觉得值得动手学习下。就把图片改成雪花图&#xff0c;完成一个雪花飘下的效果。并且&#xff0c;其中有些内容比较陈旧了&#xff0c;那么就学者改掉吧。包括&#xff1a;1.对left和top的操作仅支持IE浏览器&…

java飞机大战分数累加代码_JAVA 基础编程练习题39 【程序 39 分数累加】

39 【程序 39 分数累加】题目&#xff1a;编写一个函数&#xff0c;输入 n 为偶数时&#xff0c;调用函数求 1/21/4...1/n,当输入 n 为奇数时&#xff0c;调用函数 1/11/3...1/npackage cskaoyan;public class cskaoyan39 {org.junit.Testpublic void sum() {java.util.Scanner…

分块排序算法 java_十大经典排序算法最强总结(含JAVA代码实现)

转载自&#xff1a;https://www.cnblogs.com/guoyaohua/p/8600214.html0、排序算法说明0.1 排序的定义对一序列对象根据某个关键字进行排序。0.2 术语说明稳定&#xff1a;如果a原本在b前面&#xff0c;而ab&#xff0c;排序之后a仍然在b的前面&#xff1b;不稳定&#xff1a;如…

synchronized锁升级_synchronized详解以及锁的膨胀升级过程

点击上方"码之初"关注&#xff0c;选择"设为星标"与精品技术文章不期而遇来源&#xff1a;www.cnblogs.com/cxiaocai/p/12189848.html架构之路远且艰辛&#xff0c;但是学习的脚步始终不能停止&#xff0c;今天聊一聊synchronized。synchronized是jvm内部的…

地铁看java书女生_地铁上背单词的女孩

公历一月底的成都&#xff0c;几乎已经到了成都这座城市一年当中最冷的时候了。早上出门的时候天几乎是全黑的&#xff0c;我骑着自行车前往地铁站&#xff0c;在寒风中我不禁缩了缩脖子。因为我上班比较远&#xff0c;所以我出门比较早&#xff0c;这个时候街上的行人还很少&a…

python crm_Python CRM项目一

1 from django.db importmodels2 from django.contrib.auth.models importUser3 #Create your models here.4 classCustomer(models.Model):5 客户信息表6 name models.CharField(max_length32,nullTrue,blankTrue)7 qq models.CharField(max_length64,uniqueTrue)8 qq_name …

python arcgis批量绘图_ARCGIS中Python实现批量裁剪

《ARCGIS中Python实现批量裁剪》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《ARCGIS中Python实现批量裁剪(1页珍藏版)》请在人人文库网上搜索。1、程序代码&#xff1a;pythonview plaincopyprint?1. importarcpy2. arcpy.CheckOutExtension(spatial)3. arcpy.gp.…