JAVA:重载overload与覆盖(重写)override的区别
2010-09-27 13:19
591 查看
JAVA中的重载overload:
只要是一个类以及其父类里有的两个函数有相同的名字但是不同的参数列表(包括参数类型,参数个数,参数顺序3项中的一项或多项)。重载可以在单个类或者两个具有继承关系的类中出现。是实现类的多态性的一种重要方式。
JAVA中的覆盖override:
覆盖只会在类继承的时候才会出现,覆盖要求两个函数的名字和参数列表都完全一样。
覆盖override的注意事项:
1. 对于父类中的静态函数不可以覆盖。
2. 重写的方法不能降低父类方法的"可见度"。
3. 不能抛出新的异常或者父异常。
如下例:
class A{
static void m1(){System.out.println("父类A的方法m1");}
void m2(){}
// int m2(){}//错误,不能重载m2,参数列表一样
public void m3(int a){}
}
class B extends A{
// void m1(){}//不能重写A的m1为非静态方法
static void m1(){System.out.println("重写(Override)父类A的方法m1");}//重写静态方法
// private void m3(int a){}//重写错误,不能重写A的m3,因为降低了m3的可见性
void m2(){}//正确,重写父类A的m2,参数列表和返回值都一样
public void m3(){}//正确,重载父类A的m3,参数列表不同
void m4(){}
void m4(int a){}//正确,重载B的m4
void m5(double b){
System.out.println("Double Method "+b);
}
}
只要是一个类以及其父类里有的两个函数有相同的名字但是不同的参数列表(包括参数类型,参数个数,参数顺序3项中的一项或多项)。重载可以在单个类或者两个具有继承关系的类中出现。是实现类的多态性的一种重要方式。
JAVA中的覆盖override:
覆盖只会在类继承的时候才会出现,覆盖要求两个函数的名字和参数列表都完全一样。
覆盖override的注意事项:
1. 对于父类中的静态函数不可以覆盖。
2. 重写的方法不能降低父类方法的"可见度"。
3. 不能抛出新的异常或者父异常。
如下例:
class A{
static void m1(){System.out.println("父类A的方法m1");}
void m2(){}
// int m2(){}//错误,不能重载m2,参数列表一样
public void m3(int a){}
}
class B extends A{
// void m1(){}//不能重写A的m1为非静态方法
static void m1(){System.out.println("重写(Override)父类A的方法m1");}//重写静态方法
// private void m3(int a){}//重写错误,不能重写A的m3,因为降低了m3的可见性
void m2(){}//正确,重写父类A的m2,参数列表和返回值都一样
public void m3(){}//正确,重载父类A的m3,参数列表不同
void m4(){}
void m4(int a){}//正确,重载B的m4
void m5(double b){
System.out.println("Double Method "+b);
}
}
相关文章推荐
- Java 重写(即覆盖Override)与重载(Overload)与多态几个概念的区别分析
- JAVA中的基础-----重载与重写(覆盖)的区别:overload与override
- java中的Overload(重载)和Override(重写)的区别(二)
- java中overload(重载)与override(重写)的区别
- java基础-------重载(Overload)和重写的区别(Override)
- java总的重载(overload)、重写或覆盖(override)和隐藏分析;
- 重载(overload)与重写(override)的区别 - JAVA课堂笔记整理
- C++中重载(overload)、重写(override,也叫做“覆盖”)和重定义(redefine)的区别?
- Java--方法重写,重写(Override)与重载(Overload)区别
- java 继承 多态(override->重写(=覆盖)、overload->重载、polymorphism -> 多态)
- Java中方法重载overload和重写override的区别
- java重载(overload)与重写(override)的区别
- java基础---方法的重载(overload)和覆盖(重写)(override)
- Java中重载(Overload)和重写(Override)的区别
- java中Overload(重载)和Override(重写、覆盖)
- 关于java的重载(overload)和重写(override)的区别
- Java中重载(overload)和重写(override)的区别
- Java - 重载(Overload)和重写(Override)的区别
- 【C++基础】重载overload、重写(覆盖)override、隐藏hide的区别
- 重写(overwrite)、重载(overload)和覆盖(override)三者之间的区别