方法的重载与重写
方法重载的概述
-
方法重载指在用一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载
-
多个方法在同一个类中
-
多个方法具有相同的方法名
-
多个方法的参数不相同:(类型不同或数量不同)
-
方法重载对的特点
-
重载仅对应方法的定义,与方法的调用无关,调用方法参照标准格式
-
重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,
方法重载的实现理论
-
方法名称相同时,程序在调用方法时,可以通过传递给他们的不同个数和类型的参数来决定具体调用哪个方法
java虚拟机会根据调用方法的参数个数、参数类型、等去逐个匹配,已选择对应的方法
如果匹配失败,则编译器会报错!
-
代码实现:
public static void main(String[] args) {
int sum = add(10.0,10.0);//当给实际参数定值时:如果值是int类型 走形式参数为int类型的add方法
System.out.println(sum); // 如果值是double类型 走形式参数为double类型的add方法
}
public static int add(int a,int b){
return a+b;
}
public static int add(double a,double b){
return (int)a+(int)b;
}
方法的重载规则
-
方法名称必须相同
-
参数列表必须不同(个数不同、或者类型不同、或者参数排序列表不同等)。
-
方法的返回类型可以相同也可以不同
-
仅仅返回类型不同不足以成为方法的重载
方法重载的代码实现:
/*
方法的重载
多个方法在同一个类中
多个方法具有相同的方法名
多个方法的参数不相同:(类型不同或数量不同)
*/
public class Test01 {
public static void main(String[] args) {
//调用方法
int result = sum(10,20);
System.out.println(result);
double result1 = sum(10.0,10.0);
System.out.println(result1);
int result3 = sum(10,20,30);
System.out.println(result3);
}
//需求1:求两个int类型的数据和的方法
public static int sum(int a, int b){
return a+b;
}
//需求2:求两个double类型的数据和的方法
public static double sum(double a, double b){
return a+b;
}
//需求3:求三个int类型的数据和的方法
public static int sum(int a, int b,int c){
return a+b+c;
}
}
方法重写的概述
-
子类中出现了和父类中一模一样的方法声明
方法重写的引用
-
当子类需要父类的功能,而功能主体子类要有自己的功能时,可以重写父类的方法
这样,即延续父类的功能,又重新定义了子类特有的内容
方法重写的注意事项
-
两同、两小、一大
-
两同:
-
方法名
-
参数列表相同
-
-
两小:
-
子类返回值类型 <= 父类的返回值类型(注意此处说的是继承关系,不是值大小)
-
子类抛出异常 <= 等于父类方法抛出异常
-
-
一大
-
子类方法的修饰符权限要 >= 父类被重写方法的修饰符权限
-
修饰符的权限大小:public>protected>default>private
-
-
-
私有方法不能被重写(子类不可见而不能使用的,不是因为没有继承)
-
快捷键:笔记本:fn+alt+insert—–>overriide
@Override
-
是一个注释(注释后面看)
-
可以帮助我们检查重写方法的方法声明的正确性
代码实现:手机类和新手机类
package play.继承;
public class Demo {
public static void main(String[] args) {
newPhone newPhone = new newPhone();
newPhone.call();
}
}
class phone{
public void call(){
System.out.println("可以打电话");
}
}
class newPhone extends phone{