你看一下下面的这段代码:
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方法,因为是静态的,所以在这里叫做隐藏。
1、首先将本地要进行替换的java类,编译成class。2、其次将服务器中的jar包下载下来,放在单独文件夹下。
3、最后在jar包所在的文件夹的地址栏里输入cmd,即可完成。
隐藏与覆盖类方法在讲清这个问题之前,先明白什么是隐藏?什么是覆盖?
所谓隐藏,是指运行时系统调用当前对象引用的编译时类型中定义的方法;对于覆盖,则指运行时系统调用当前对象引用运行时类型中定义的方法。
所以在执行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类的成员变量。