重载Overloading
1.在一个类中可以有多个同名函数,单要传不同的参数以及不同的定义。
2.重载时,要有多个同名的函数,但是参数类型以及参数数量要不用。返回类型可以不同。
3.重载时同一类中的多态关系。
例子:根据传参不同,输出结果不同。
public class Dog{
dog(){
//this.test();
};
void test(){
System.out.println("im a dog");
//this.test("Mike",3);
};
void test(String name , int age){
System.out.println("my name is Mike and im 3 years old");
//this.test("China","boy");
};
void test(String home , String sex){
System.out.println("im a boy from China");
};
public static void main(String[] args){
Dog dog = new Dog();
//根据传参不同调用不同方法
dog.test();
//dog.test("Mike",3);
//dog.test("China","boy");
};
}
注释部分为第一次编写错误部分。用法没有体现多态,仅new一下,就可以自动执行所有方法。
重写(覆盖)Overriding
1.重写是父类与子类的多态关系。如果子类中的某方法与父类仲的某方法参数相同,那么我们称之为重写该方法。
2.若子类中的方法与父类方法名、返回类型、参数表一致,则覆盖父类方法。
3.重写方法只能重写父类非私有方法。
4.子类访问修饰符要大于父类(public>protected>default>private).
5.子类的返回值类型必须与父类一致,否则不能称为重写。
6.重写方法一定不能抛出新的异常,或者不能抛出比父类异常范围更广的异常。如:父类抛出IoException();子类就不能抛出Exception();只能抛出IoException();的子类异常。
7.重写的意义:有时子类并不想原封不动的继承父类的方法,需要有自己的特性,那么就在传参类型相同的情况下,修改方法的内容。