java 什么是隐藏?java中 什么是隐藏什么是重写二者有何区别
大家好,如果您还对java 什么是隐藏不太了解,没有关系,今天就由本站为大家分享java 什么是隐藏的知识,包括java中 什么是隐藏什么是重写二者有何区别的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!
Java 隐藏和覆盖间的区别
在JAVA中所谓隐藏,是指运行时系统调用当前对象引用的编译时类型中定义的方法;也就是子类重写父类的方法,要求方法名和参数类型完全一样(参数不能是子类),返回值和异常比父类小或者相同(即为父类的子类),访问修饰符比父类大或者相同
所谓覆盖,则指运行时系统调用当前对象引用运行时类型中定义的方法。也就是父类和子类拥有相同名字的属性或者方法时,父类的同名的属性或者方法形式上不见了,实际是还是存在的
两者的区别主要在于:
被隐藏的属性,在子类被强制转换成父类后,访问的是父类中的属性
被覆盖的方法,在子类被强制转换成父类后,调用的还是子类自身的方法
在使用隐藏和覆盖的时候主要注意以下几点:
一、父类的实例变量和类变量能被子类的同名变量隐藏。
二、父类的静态方法被子类的同名静态方法隐藏,父类的实例方法被子类的同名实例方法覆盖。
三、不能用子类的静态方法隐藏父类的实例方法,也不能用子类的实例方法覆盖父类的静态方法,否则编译器会异常。
四、用final关键字修饰的最终方法不能被覆盖。
五、变量只能被隐藏不会被覆盖,子类的实例变量可以隐藏父类的类变量,子类的类变量也可以隐藏父类的实例变量。
java中 什么是隐藏什么是重写二者有何区别
隐藏是指当父类和子类有相同名字的属性的时候,父类的同名变量形式上不可见了。但是实际还是存在的。
譬如A有int变量a= 10,父类B有变量a= 5;
当B b= new A()得时候,若用b.a那么父类的5就被隐藏了,此时b.a=子类的10。在子类里面访问super.a得时候只能得到子类的值
重写是针对方法的,通常是父类的方法在子类中重新写过。当执行子类的实例得时候,实际运行的是子类的方法。在子类里面可以通过super.method()来显式的访问。
java中隐藏域是什么
隐藏域是用来收集或发送信息的不可见元素,对于网页的访问者来说,隐藏域是看不见的。当表单被提交时,隐藏域就会将信息用设置时定义的名称和值发送到服务器上。
Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
如何理解Java中的隐藏与覆盖
隐藏与覆盖类方法
在讲清这个问题之前,先明白什么是隐藏?什么是覆盖?
所谓隐藏,是指运行时系统调用当前对象引用的编译时类型中定义的方法;对于覆盖,则指运行时系统调用当前对象引用运行时类型中定义的方法。
所以在执行Student1
s
=
new
Graduate1();和Graduate1
g
=
new
Graduate1();时,(1)先进行Student1类的构造,这里包括两个方法study()和exercise(),由于study()方法被覆盖,所以先执行Graduate1里study(),再执行Student1里的exercise();(2)再进行Graduate1类的构造,同样包括两个方法study()和exercise(),所以执行顺序为先Graduate1里的study()方法,再Graduate1里的exercise()方法。
2.
隐藏与覆盖成员变量
如果子类中的变量和父类中的变量具有相同的名字,那么子类中的变量就会隐藏父类中的变量,不管他们的类型是什么,也不管他们是类变量还是实例变量。
所以在执行诸如System.out.print(s.math);之类的s实例的程序时,显示为Student1类的成员变量,而执行诸如System.out.print(g.math);之类的g实例的程序时,显示为Graduate1类的成员变量。
文章分享结束,java 什么是隐藏和java中 什么是隐藏什么是重写二者有何区别的答案你都知道了吗?欢迎再次光临本站哦!