一、重载
重载是在同一个类中,拥有相同的方法名,不同的参数列表、参数个数、参数类型,则视为重载。重载是一个类中多态性的表现,在编译时起作用(静态多态性)。
public static void main(String[] args){
Hello2 hello2=new Hello2();
hello2.test();
hello2.test(1);
hello2.test(1,2);
}
public void test(){
System.out.println("test");
}
public void test(int a){
System.out.println("test"+" "+a);
}
public void test(int a,int b){
System.out.println("test"+" "+a+" "+b);
}
重载总结:
- 重载Overload是一个类中多态性的一种表现
- 重载要求方法名相同,参数类型、参数顺序、参数个数不同
- 可以抛出不同的异常,可以有不同的修饰符
二、重写
重写就是子类对父类在原有的方法从新编译,是父类与子类之间的多态性,在运行时起作用。子类可以继承父类的所有方法,也可以继承父类中的某个方法。在方法名、返回类型、参数列表完全一致的情况下,这就是重写。子类的访问权限不能低于父类的。
public class Hello {
//父类
public void testDome1(){
System.out.println("Hello");
}
}
public class Hello2 extends Hello{//继承Hello父类
public static void main(String[] args){
Hello2 hello2=new Hello2();
//进行输出
hello2.testDome1();
}
public void testDome1(){
//super:保留父类方法
super.testDome1();
System.out.println("Hello2");
}
}
public class Hello2 extends Hello{//继承Hello父类
public static void main(String[] args){
Hello2 hello2=new Hello2();
/*
* 执行Hello2子类
* 输出结果:
* hello
* hello2
* */
hello2.testDome1();
}
public void testDome1(){
//super:保留父类方法
super.testDome1();
System.out.println("Hello2");
}
}
重写总结:
- 方法名、参数列表和返回类型必须子类与父类一致
- 构造方法不能重写,声明为final的方法不能重写,声明为static的方法不能重写,但是能够再次声明。
- 重写方法能抛出任何非强制性异常,但不能抛出新的强制性异常