方法的重载与重写

方法重载:

在同一个类中,不同的方法,他们的功能是一样的,我们使用了“相同的”名称来表示,但是他们的形参列表不同,可能是个数不同,可能是类型不同,这样的两个或多个方法,称为方法的重载。和返回值类型无关
例如:

public static void main(String[] args){
	int max1 = max(2,5);//max1=5
	double max2 = max(2.1,5.5);//max2=5.5
	int max3 = max(2,5,3);//max3=5
}
int max(int a, int b){
	return a>b?a:b;
}
double max(double a, double b){//类型不同
	return a>b?a:b;
}
int max(int a, int b, int c){//个数不同
	int m = a>b ? a : b;
	return m > c ? m : c;
}
//返回值不同,形参列表相同,编译错误,因为重写要求形参列表必须不同,与返回值无关
/*double max(int a, int b){
	return a>b?a:b;
}*/

方法的重写(Override):

  • 1、什么情况下需要重写?

    • 当子类继承了父类的某个方法,但是这个方法的实现(方法体)的代码不适用于子类的功能特征,那么子类可以选择进行重写。
  • 2、重写的要求?

    • (1)方法名称:必须相同

    • (2)形参列表:必须相同

      • 如果形参列表不同,那么就是构成重载,而不是重写。
    • (3)返回值类型:

      • 如果基本数据类型(8种)和void:要求必须相同
      • 如果是引用数据类型:要求子类重写的数据类型<=父类原数据类型(我们认为子类的类型是<父类的类型,从事物的分类范围来说的)
    • (4)权限修饰符:

      • A: 不能私有的。 如果是跨包,还不能是缺省的。因为它们在子类中不可见,所以无法进行重写。
      • B:而且要求:子类重写的修饰符>=父类原方法修饰符
    • (5)其他修饰符

      • A:不能static
      • B:不能final
class Graphic{//图形类型
   //所有的图形都应该具备一个功能:可以求面积
   protected double getArea(){
   	return 0.0;//这里只是为了保证编译不报错
   }
}
class Circle extends Graphic{//圆,图形的一种
   private double radius;//圆的半径

   public Circle(){
   	//什么都没写,会默认调用super()方法
   }
   
   public Circle(double radius) {
   	super();
   	this.radius = radius;
   }

   public double getRadius() {
   	return radius;
   }

   public void setRadius(double radius) {
   	this.radius = radius;
   }
   
   //重写父类的getArea()
   public double getArea() {
   	return Math.PI * radius * radius;
   }
   
   //错误示例:方法名称不一样,就不是重写,这是一个全新的扩展的方法
   //编译不报错,但不是重写,是一个新方法
   public double getMianJi(){
   	return Math.PI * radius * radius;
   }
   
   //以下示例,属于重载
   //子类有两个getArea方法,一个是从父类继承的,一个是自己声明的
   //编译不报错,对本类方法进行了重载
   public double getArea(double r) {
   	return Math.PI * radius * radius;
   }
   
   //编译不通过,即不是重载,也不是重写
   /*public void getArea() {
   	double area =  Math.PI * radius * radius;
   	System.out.println("area = " + area);
   }*/
}

重写和重载很像

重载(Overload)的要求:方法名相同,形参列表不同,和返回值类型无关。

重写是指子类重写父类的方法

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值