Java 重写和重载的详解

一,重载

1.概念:对于同一个类,如果这个类里面有两个或者多个重名的方法,但是方法的参数个数、类型、顺序至少有一个不一样,这时候局构成方法重载

2.示例:

public class Test{
  public void a( ){
  };
   public void a( int i){
   };
}
说明:在Test类中有两个方法,名字都相同,都是a。在调用方法a时,如果不传参数,则系统会自动调用第一个方法a,如果传入一个 int 类型的参数,则系统调用第二个方法a。

public class Test{
  public void a(int i){
  };
  public void a(String j){
  };
}
说明:在Test类中有两个同名的方法a。在调用方法时,如果传入一个int类型的参数,则会自动调用第一个a方法,如果传入一个String类型的参数,则会自动调用第二个方法a。

public class Test{
  public void a(int i,String j){
  }
  public class a(String j,int i){
  }
}
说明:在Test类中有两个同名的方法。在调用方法时,如果传入的第一个参数类型为int,第二个参数类型为String,则自动调用第一个方法a。如果传入的第一个参数为String类型,第二个参数类型为int,则自动调用第二个方法a。

3.作用:

方法重载就是对不同数据类型的的数据实现相似的操作。

二,重写

1.概念:

当一个子类继承一父类,而子类中的方法与父类中的方法的名称,参数个数、类型都完全一致时,就称子类中的这个方法重写了父类中的方法。

重写也是覆盖 override

2.前提:

必须要有继承关系

3.特点:

(1):当子类重写了父类的函数,那么子类的对象如果调用该函数,一定调用的是重写过后的函数。

   可以通过super关键字进行父类的重写函数的调用。

(2): 继承可以使得子类增强父类的方法

4.细节:

(1): 函数名必须相同

(2):参数列表必须相同

(3): 子类重写父类的函数的时候,函数的访问权限必须大于等于父类的函数的访

问权限否则编译报错

(4):子类重写父类的函数的时候,返回值类型必须是父类函数的返回值类型或该返回值类型的子类。不能返回比父类更大的数据类型

5.示例:

class Animal{
	int x=1;
	String name;
	
	void eat(){
		System.out.println("吃东西");
	}
	void shout(){
		System.out.println("我是动物");
	}
}

class Dog extends Animal{
	
	
	void eat(){
		System.out.println("啃骨头");
	}
	void shout(){
		System.out.println("旺旺");
	}
	void eat(String food){
		System.out.println("吃:"+food);
	}
}
class Cat extends Animal{

	void eat(){
		System.out.println("吃老鼠");
	}
	void shout(){
		System.out.println("喵喵");
	}
}

class Demo9{

	public static void main(String[] args){
		Dog d=new Dog();
		d.shout();
		d.eat();
		
		Cat c=new Cat();
		c.shout();
		c.eat();
		System.out.println();
     	}
说明:

动物类有名字,有吃和叫的方法

狗继承动物重写父类吃和叫的方法

猫继承动物重写父类吃和叫的方法

三,重载和重写的不同

1:重载(overload):  

       1:前提: 所有的重载函数必须在同一个类中

       2:特点:

       函数名相同,参数列表不同,与其他的无关(访问控制符、返回值类型)

       3:不同:

个数不同 、 顺序不同、 类型不同

2:重写(override)

     1:前提: 继承

     2:特点:

       函数名必须相同、参数列表必须相同。

       子类的返回值类型要等于或者小于父类的返回值

  • 16
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值