Loading

重载和重写

什么是方法重载

       发生在同一个类中,方法名必须相同,参数类型不同,参数数量不同,发生在编译时候。       实验理论:在一个类中,方法名称相同时,编译器会根据调用方法的参数数量,参数类型去逐个匹配,用来选择对应的方法。

 代码示例:

package com.kuang.dao;

public class Demo01 {
public static void main(String[] args) {
double max = max(10.0,20.0);
System.out.println(max);
}
public static int max(int num1,int num2){

int result=0;

if(num1==num2){
System.out.println("num1==num2");
return 0; //中止方法
}
if(num1>num2){
result = num1;
}else{
result = num2;
}
return result;
}

public static double max(double num1,double num2){
double result=0;
if(num1==num2){
System.out.println("num1==num2");
return 0; //中止方法
}
if(num1>num2){
result = num1;
}else{
result = num2;
}
return result;
}
}
方法重载的好处?
只需要记住一个方法,就可以实现类似的功能。
什么是方法重写?
发生在父子类中,方法名,参数列表必须相同,返回值范围小于等于父类,抛出的异常范围子类小于等于父类,访问修饰符范围大于等于父类; ClassNotFoundException -->Exception(大)
如果父类方法访问修饰符为private则子类就不能重写该方法。public>protected>DeFAULT>Private
重写:子类的方法和父类必须一致。
方法重写的好处?
因为你还没有用到抽象类,所以无法理解重写的作用。
比如,现在有一个父类P,它有N多个子类S1,S2,S3...
在某一种情况下,你根本就不知道是哪个子类在执行,有些情况下也不必知道。但是只知道这些子类都有父类的一个方法m(),这时候,你可以通过将一个变量声明为P,但是实际却是S1。
如,P s = new S1(); s.m();这时候实际执行的是子类的方法体,而不是父类的方法体。
这也是接口的作用,也是很多时候所说的面向接口编程。
 




       

 

posted @ 2022-03-12 10:10  远乡人  阅读(20)  评论(0编辑  收藏  举报