Java overload和override的区别分析
方法的重写(Overriding)和重载(Overloading)是Java多态性的不一样表现。重写(Overriding)是父类与子类之间多态性的一种表现,而重载(Overloading)是一个类中多态性的一种表现。
若是在子类中定义某方法与其父类有相同的名称和参数,咱们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。
若是在一个类中定义了多个同名的方法,它们或有不一样的参数个数或有不一样的参数类型或有不一样的参数次序,则称为方法的重载(Overloading)。不能经过访问权限、返回类型、抛出的异常进行重载.
1.方法重载(overload)
概念:简单的说:方法重载就是类的同一种功能的多种实现方式,到底采用哪一种方式,取决于调用者给出的参数。
注意事项:
(1)方法名相同
(2)方法的参数类型、个数、顺序不至少有一项不一样
(3)方法返回类型能够不一样
(4)方法的修饰符能够不一样
若是只是返回类型不同,不可以构成重载
若是只是控制访问修饰符号不同,也是不能构成重载的
Overloaded的方法是能够改变返回值的类型。
2.方法覆盖(override)
概念:简单的说:方法覆盖就是子类有一个方法,和父类的某个方法的名称、返回类型、参数同样,那么咱们就说子类的这个方法覆盖了父类的那个方法。
注意事项:方法覆盖有不少条件,总的讲有两点必定要注意:
(1)子类的方法的返回类型,参数,方法名称,要和父类方法的返回类型,参数,方法名称彻底同样,不然编译出错。
(2) 子类方法不能缩小父类方法的访问权限(反过来是能够的)
例:
Overrride实例 ide
class A {
public
int getVal() {
return (
5);
}
}
class B
extends A {
public
int getVal() {
return (
10);
}
}
class Override {
public
static
void main(String[] args) {
B b
=
new B();
A a
= (A) b;
// 把 b 强 制转换成A的类型
int x
= a.getVal();
System.out.println(x);
}
}
Overload实例
// ackage com.guonan;
// Demostrate method voerloading.
class OverloadDemo {
void test() {
System.out.println(
"NO parameters");
}
void test(
int a) {
System.out.println(
"a:"
+ a);
}
// end of Overload test for one integer parameter.
void test(
int a,
int b) {
System.out.println(
"a and b:"
+ a
+
" "
+ b);
}
double test(
double a) {
System.out.println(
"double a:"
+ a);
return a
* a;
}
}
class Overload {
public
static
void main(String[] args) {
OverloadDemo ob
=
new OverloadDemo();
double result;
ob.test();
ob.test(
10);
ob.test(
10,
20);
result
= ob.test(
123.
25);
System.out.println(
"Result of ob.test(123.25):"
+ result);
}
}