方法的重载(overload)与方法的覆盖(override)

本文详细解析了方法重载(overload)和方法覆盖(override)的概念与使用,包括两者之间的区别,以及如何在实际编程中正确应用。通过具体示例,帮助读者理解方法的重载与覆盖在类中的实现方式。

方法的重载(overload):

概念
在一个类中,定义的多个名字相同,但是参数列表不同的方法
方法重载的要求:
① 方法名相同
② 形参列表不同(形参的个数、顺序、类型)
③ 方法的返回值、修饰符、异常没有要求
注意:只是形参名字不同,不能构成方法的重载
使用
根据调用者传递的实际参数,进行匹配对应的方法。
注意:方法的重载应用时,会根据方法调用时指定的实际参数, 先精确匹配,不能精确匹配时,再就近向上匹配。 就近向上不能匹配成功时,编译报错。 避免出现混淆调用的现象。
作用
让一个对象的同类方法,由于参数表的不同造成的差异,对用户屏蔽!
举例

class Student{
    String name;  //姓名
    int age;      //年龄
    double score; //成绩 
    // 定义方法sayHello
	public void sayHello(){   
		System.out.println("我叫"+name+"今年"+age+"岁,考了:"+score+"分");
	}    
	// 定义方法sayHello:被罚,自我介绍 n遍,n外界传递    
	public void sayHello(int n){
		//循环n遍
		for(int i=1;i<=n;i++){
			System.out.println("我叫"+name+"今年"+age+"岁,考了:"+score);
		}   
	}
    // 定义方法sayHello:你好 n,很高兴认识你.  n数据由外界传递 
    public void sayHello(String n){
    	System.out.println("你好"+n+",很高兴认识你,我叫"+name);
    }
}

方法的覆盖(override)

方法的覆盖(也称为方法重写)
子类中定义和父类相同的方法。
子类用特殊的方法实现替换掉父类继承给它的一般的方法实现
方法覆盖的要求
子类的方法名、形参列表、返回值类型和父类相同
子类的访问修饰符和父类相同或是比父类更宽
使用
通过子类型引用调用方法,如果调用的方法子类覆盖了父类中的方法,则优先使用子类覆盖的方法。
注意事项
如果子类定义了方法名、形参列表和父类相同;但是返回值和父类不同,不能构成方法的覆盖,编译报错。
如果子类定义方法名相同、但是形参列表不同的方法,编译通过,运行也通过,此语法是方法的重载。
覆盖的应用场景
父类中提供的方法,不足以满足子类的功能需求时,子类可以根据自身功能重写此方法。

public class TestAnimal2{
    public static void main(String[] args){ 
	    //创建Dog对象       
	    Dog d = new Dog();
	    //调用吃方法 ======打印狗吃骨头                
	    d.eat(); 
	    //调用睡方法=====打印动物睡6小时       
	    d.sleep();
	    //调用叫方法=====打印狗叫汪汪汪
	    d.shout();
    }
}
// 父类   动物 
class Animal{    
	String name;	//名字 
	int age;    	//年龄
	//定义吃方法
	public void eat(){        
		System.out.println("动物会吃...");    	
	} 
	//定义睡方法   
	public void sleep(){        
		System.out.println("动物睡6小时...");    
	} 
} 
//子类 Dog 继承 父类
class Dog extends Animal {
    //狗会叫  定义一个叫方法
	public void shout(){        
		System.out.println("狗叫汪汪汪...");    
	}    
	public void eat(){        
		System.out.println("狗吃骨头...");    
	} 
}

overload和override的区别

overload

  1. 方法名相同
  2. 形参列表不同(数据类型、个数、顺序)
  3. 访问修饰、返回值类型、异常没关系

override

  1. 子类的方法名、形参列表、返回值类型和父类相同
  2. 子类的访问修饰符和父类相同或是比父类更宽
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值