override可以翻译为覆盖,从字面就可以知道,它是覆盖了一个方法并且对其重写,以求达到不同的作用。最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法进行了声明,而在实现时,就需要实现接口声明的所有方法。除了这个典型的用法以外,在继承中也可能会在子类覆盖父类中的方法。在覆盖要注意以下的几点:
1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果
2、覆盖的方法的返回值必须和被覆盖的方法的返回一致
3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类
4、被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。
overload来说可能比较熟悉,可以翻译为重载,它是指可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法,然后再调用时,VM就会根据不同的参数样式,来选择合适的方法执行。在使用重载要注意以下的几点:
1、在使用重载时只能通过不同的参数样式。
2、不能通过访问权限、返回类型、抛出的异常进行重载
3、方法的异常类型和数目不会对重载造成影响
4、对于继承来说,如果某一方法在父类中是访问权限是priavte,那么就不能在子类对其进行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。
隐藏一般是对静态的属性和方法来说的。你看一下下面的这段代码:
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方法,因为是静态的,所以在这里叫做隐藏。
在实际写入文件时,有两种写入文件的方式:覆盖和追加。其中“覆盖”是指清除原文件的内容,写入新的内容,默认采用该种形式写文件,“追加”是指在已有文件的末尾写入内容,保留原来的文件内容,例如写日志文件时,一般采用追加。在实际使用时可以根据需要采用适合的形式,可以使用: public FileOutputStream(String name, boolean append) throws FileNotFoundException 只需要使用该构造方法在构造FileOutputStream对象时,将第二个参数append的值设置为true即可。try {BufferedWriter out = new BufferedWriter(new FileWriter(outfilename))
out.write(aString)
out.close()