java 方法覆盖

Python013

java 方法覆盖,第1张

对比Java语言中的覆盖和重载

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()