JavaSE之重写与重载

目录 复制

重载与重写

方法的重载:

一个类中定义的方法,是允许重载的( 相同的方法名称 ).
当类有多个同名的方法时,方法会对输入类型数据按创建方法时的参数类型进行对比,输出两者类型一样的方法返回值
最有体现力的就是无参构造方法和有参构造方法

public class Person{
	private String name; 
	private String age;
	//三种构造方法
	public Person() {}
	public Person(String name) {
	this.name = name;
	}
	public Person(String name, String age) {
		this.name = name;
		this.age = age;
	}
	public static void main(String[] args){
	/*
	*这里的p1在创建过程中因为没有输入参数,
	*在调用构造函数时选对三种构造方法进行对比,然后选取了参数类型是无参的构造方法
	*p2一样,因为传入的参数只有一个,所以没有调用无参构造方法和两参构造方法
	*p3也因为是传入了两个参数,所以调用了两参的构造方法
	*/
	Person p1 = new Person();
	Person p2 = new Person("文西");
	Person p3 = new Person("古晶","28");

限制条件

  1. 方法名称相同
  2. 参数列表长度 或 参数列表类型 或参数顺序不同
    ★与返回值类型无关

重写:

当我们想调用子类与父类名字相同但内容不同的方法时,就会使用方法的重写(@Override)
规则
1、参数列表必须完全与被重写方法的相同
2、返回类型必须完全与被重写方法的返回类型相同
3、访问权限不能比父类中被重写的方法权限低
4、声明为static和private的方法不能被重写,但能被再次声明
任何一点不满足都会返回使用父类的方法
重写与重载的区别
重写(Override)是发生在子父类中的方法覆盖
重载(Overload)是发生在一类中的方法覆盖(例如:一个类里面有多个名称相同但参数类型长度不同方法,这时我们需要方法的重载,使用与输入数据类型以的方法)
它们之间的区别:
1、发生的位置
重载:发生在一个类中
重写:发生在子父类中
2、参数列表限制
重载:必须不同
重写:必须相同
3、返回值类型
重载:与返回值无关
重写:返回值类型必须一致
4、访问权限:
重载:与访问权限无关
重写:子类的方法权限不能小于父类的方法权限
5、异常处理
重载:与异常无关
重写:异常范围可以更小,但是不能抛出新的异常
重写演示:

public class GG {	
	public static void main(String[] args) {
		Student s = new Student();
		s.say();
	}
}

class Person{	//父类
	String name; 
	String age;
	
	public Person() {}
	public Person(String name, String age) {
		this.name = name;
		this.age = age;
	}
	public void say() {
		System.out.println("爸爸");
	}	
}

class Student extends Person{	//继承
	@Override
	public void say() {
		System.out.println("儿子");
	}
}

运行结果
在这里插入图片描述
这里我们发现虽然Student类虽然继承了Person的say方法,但是实际上运行的是自己的say方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值