「java隐藏与覆盖」java中的隐藏
本篇文章给大家谈谈java隐藏与覆盖,以及java中的隐藏对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
有关java中覆盖和隐藏的问题
隐藏一般是对静态的属性和方法来说的。
你看一下下面的这段代码:
class
planet
{
public
static
void
hide()
{
system.out.println("the
hide
method
in
planet.");
}
public
void
override()
{
system.out.println("the
overrid
method
in
planet.");
}
};
public
class
earth
extends
planet
{
public
static
void
hide()
{
system.out.println("the
hide
method
in
earth.");
}
public
void
override()
{
system.out.println("the
override
method
in
earth.");
}
public
static
void
main(string[]
args)
{
earth
myearth
=
new
earth();
planet
myplanet
=
(planet)
myearth;
myplanet.hide();
myplanet.override();
}
}
覆盖就是子类的方法跟父类的方法具有完全一样的签名和参数。我们看到上面那两个类,父类的override在子类中重写了,因为有跟父类有相同的签名和参数,所以叫做覆盖,但是hide方法,因为是静态的,所以在这里叫做隐藏。
JAVA多态中的隐藏和覆盖
Java的引用变量有两个类型,一个是编译时类型,一个是运行时类型
编译时类型:由声明该变量时使用的类型决定
运行时类型:由该变量指向的对象类型决定
如果编译时类型和运行时类型不一致,会出现所谓的多态。因为子类其实是一种特殊的父类,因此java允许把一个子类对象直接赋值给一个父类引用变量,无须任何类型转换,或者被称为向上转型,由系统自动完成。
如 Father f = new Son(); Son是Father的子类
引用变量f就会出现编译时类型和运行时类型不一致的情况 编译时是Father类型的 运行时是Son类型的
当变量的编译时类型和运行时类型不一致时,通过变量访问它所引用的对象的实例时,该实例变量的值由声明该变量的类型决定。
通过变量访问它所引用的对象的方法时,该方法的行为由所引用的对象实际类型所决定。
Java中属性的隐藏与方法的覆盖的区别
我明白你想问的意思。我先这样回答下,看你的基础够不够看懂,如果不懂就再问,email我也行。
在C++中,数据成员(属性)可以隐藏,函数成员(方法)既可以隐藏也可以覆盖(通过关键字virtual)。
在Java中,动态编联始终是打开的(相当于始终有一个virtual在方法前面)。所以Java中的方法没办法隐藏,只能覆盖。
可以对比一下C#,它通过一套关键字virtual、new、override,实现了既能隐藏方法,又能覆盖方法。
JAVA方法的覆盖与域的隐藏有何不同?
方法的覆盖出现在父类与子类之间,若子类中定义的某个方法特征与父类中定义的某个方法特征完全一样,那么就说子类中的这个方法覆盖了父类中的相应的那个方法。
父类中定义了:public
void
todo(String
str);
子类也定义了:public
void
todo(String
str);
则子类的todo方法覆盖了父类的todo方法!!
域的隐藏,你是指private么,私有的变量、方法只能在自己家里调用,儿子老爹都不能用,其他人更不能用。
class
A
{
private
int
num;
//num只能在A里面用,例如:num
=
num
+
1;
}
class
B
{
//num不能在这里用:a.num
=
a.num
+
1;
}
如何理解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中的隐藏的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-08,除非注明,否则均为
原创文章,转载请注明出处。