Java基础-方法的重写与重载

重写(Overriding)

什么是重写? 在Java中一个子类继承一个父类,这就有了继承关系,子类就拥有了父类的所有非私有化的属性、方法、构造函数的使用权。当子类需要修改父类的一些方法进行扩展,增大功能,这种方式就叫做方法的重写。

例子

/**
 * 	动物类
 */
class Animal {
	public void out() {
		System.out.println("this is Animal!");
	}
}

/**
 * 	狗类
 *  继承动物类
 */
class Dog extends Animal{
	public void out() {
		System.out.println("this is dog!");
	}
}

public static void main(String[] args) {

    //new 动物类
    Animal animal = new Animal();
    animal.out();

    //new 狗类
    Animal dog = new Dog();
    dog.out();
}

//输出结果 
//this is Animal!
//this is dog!

重写规则

  • 参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载。
  • 返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载。
  • 访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)
  • 重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。例如: 父类的一个方法申明了一个检查异常IOException,在重写这个方法是就不能抛出Exception,只能抛出IOException的子类异常,可以抛出非检查异常。

重载(Overloading)

Java中方法的重载是指在一个类中有多个方法,它们具有相同的名字,不同的参数(数据类型、参数个数、顺序)。这就是方法的重载,当调用方调用同名方法时,通过传入不同的参数而区分调用哪个方法,这就是多态性。

例子

/**
 * 狗类
 */
public class Dog extends Animal {

	public void out(String name, String age) {
		System.out.println("这只狗狗的名字叫做:" + name + ",它今年有:" + age + "岁啦!");
	}

	public void out(String name, String age, String action) {
		System.out.println("这只狗狗的名字叫做:" + name + ",它今年有:" + age + "岁啦!" + "它正在" + action+"!");
	}
}

public static void main(String[] args) {

    Dog dog = new Dog();
    dog.out("小黑", "3");
    dog.out("小黑", "3", "晒太阳");
}

//输出结果
//这只狗狗的名字叫做:小黑,它今年有:3岁啦!
//这只狗狗的名字叫做:小黑,它今年有:3岁啦!它正在晒太阳

重载规则

  • 必须具有不同的参数列表;(数据类型、参数个数、顺序)
  • 可以有不同的返回类型,只要参数列表不同就可以了;
  • 可以有不同的访问修饰符;
  • 可以抛出不同的异常;

重载和重写的区别

区别点重载方法重写方法
参数列表必须修改一定不能修改
返回类型可以修改一定不能修改
异常可以修改可以减少或删除,一定不能抛出新的或者更广的异常
访问可以修改一定不能做更严格的限制(可以降低限制)

访问修饰符

访问修饰符本类同包子类其他
private
默认(default)
protected
public

文尾

文章均为学习阶段记录笔记,若有不妥请留言指正。谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值