当前位置: 技术问答>java相关
overriding & overloading的问题
来源: 互联网 发布时间:2015-11-12
本文导语: 1. overriding 和 overloading 有什么区别?哪些地方该用overriding;哪些地方用 overloading?在java的polymorphism 中怎样有效的去实现它们? (请举举例子说明,谢谢) 2. 请问以下程序段中的temp()是覆写,还是重载?怎样才算是(...
1. overriding 和 overloading 有什么区别?哪些地方该用overriding;哪些地方用 overloading?在java的polymorphism 中怎样有效的去实现它们?
(请举举例子说明,谢谢)
2. 请问以下程序段中的temp()是覆写,还是重载?怎样才算是(覆写)重载呢?
class a {
public void temp() {
System.out.println("hello");
}
class b extends a {
public void temp() {
System.out.println("hello world");
}
(请举举例子说明,谢谢)
2. 请问以下程序段中的temp()是覆写,还是重载?怎样才算是(覆写)重载呢?
class a {
public void temp() {
System.out.println("hello");
}
class b extends a {
public void temp() {
System.out.println("hello world");
}
|
overloading重载,就是说在本类里面,有多个同名method(),参数并不相同(包括参数类型和参数的顺序)、返回类型可以相同;也就是本来有一个method(),而现在重载了其它的method();
class a
{
public void d()
{
System.out.println(1111);
}
public void d(String s)
{
System.out.println(s + 222);
}
}
overriding覆盖:就是说子类有一个method(子类)与父类中的一个method(父类)同名,返回类型可以不同,这时method(子类)将method(父类)给覆盖了,调用的是method(子类)
class a
{
public void d()
{
System.out.println(1111);
}
}
class b extends a
{
public void d()
{
System.out.println(222);
}
}
|
都不准确,也许叫覆写更准确,要理解重载的概念,重载就是函数的名字相同而参数不同并且在同一个对象中。
如果将
class b extends a {
public void temp() {
System.out.println("hello world");
}
更改成
class b extends a {
public void temp(String a) {
System.out.println("hello world");
}
也许可以算是重载,因为b类继承了A的public void temp()函数,而b中有一个名字相同但是参数不同的函数。
如果将
class b extends a {
public void temp() {
System.out.println("hello world");
}
更改成
class b extends a {
public void temp(String a) {
System.out.println("hello world");
}
也许可以算是重载,因为b类继承了A的public void temp()函数,而b中有一个名字相同但是参数不同的函数。
|
过载:
class a
{
public void d()
{
System.out.println(1111);
}
}
class b extends a
{
public void d()
{
System.out.println(222);
}
}
重载:
class a
{
public void d()
{
System.out.println(1111);
}
public void d(String s)
{
System.out.println(s + 222);
}
}
不知道理解的对不.
class a
{
public void d()
{
System.out.println(1111);
}
}
class b extends a
{
public void d()
{
System.out.println(222);
}
}
重载:
class a
{
public void d()
{
System.out.println(1111);
}
public void d(String s)
{
System.out.println(s + 222);
}
}
不知道理解的对不.
|
overriding 在同一个类中会导致编译器不知道你要调用的是哪个方法,而出现异常。
overloading 在子类中好像不行。
overloading 在子类中好像不行。