方法重写

1.存在的问题:父类的功能无法满足子类的需求。

   解决方法:方法重写。

2.方法重写的前提:必须要存在继承的关系。

3.定义:子父类出现了同名的函数,这个现象我们就称作为方法的重写。

4.什么时候要使用方法的重写?

当父类的功能无法满足子类的需求时使用方法的重写。

5.方法重写要注意的事项:

(1)方法重写时, 子类的方法名与形参列表必须和父类一致。
(2)方法重写时,子类的权限修饰符必须要大于或者等于父类的权限修饰符。
(3)方法重写时,子类的返回值类型必须要小于或者 等于父类的返回值类型。

比如

class Animal{  //大的数据类型 
}

class Fish extends Animal{  //Fish小的数据类型。
}

(4)方法重写时, 子类抛出的异常类型要小于或者等于父类抛出的异常类型。
Exception(最坏)
RuntimeException(小坏)
理解的话可以理解为一代要比一代好,比如父亲杀人放火,儿子偷鸡摸狗是好事;如果父亲偷鸡摸狗,儿子杀人放火是坏事。
注意:方法的重载是必须在一个类中,方法的重写是必须要存在继承关系。
(2)方法重载的要求
① 函数名要一致。
② 形参列表不一致(形参的个数或形参的类型不一致)
③ 与返回值类型无关。

6.注意区分方法的重载

(1)方法的重载:在一个类中 存在两个或者两个 以上的同名函数,称作为方法重载。

7.方法重写的特点:

(1)当子类重写了父类的函数,那么子类的对象如果调用该函数,一定调用的是重写过后的函数,可以通过super关键字进行父类的重写函数的调用。

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

8.实例:

(1)需求:使用Java类描述一下普通的学生,基础班的学生以及就业班的学生。所有的学生都会学习,但是学习的内容不一样,普通的学生学习马克思列宁主义,基础班的学生学习Javase,就业班的学生学习JavaEE。

(2)实例

class Student {
	String name;

	//构造函数
	public Student(String name){
		this.name = name;
	}

	public void study(){
		System.out.println(name+"学习马克思列宁主义");
	}
}

//基础班的学生属于学生中的一种
class BaseStudent extends Student{
	public BaseStudent(String name){
		super(name);	//指定调用父类构造函数
	}

	//重写
	public void study(){
		System.out.println(name+"学习Javase");
	}
}

//就业班的学生也属于普通学生中的一种
class WorkStudent extends Student{
	//构造函数
	public WorkStudent(String name){
		super(name);
	}
	//重写
	public void study(){
		System.out.println(name+"学习JavaEE");
	}
}

class Demo1{
	public static void main(String[] args){
		BaseStudent s = new BaseStudent("张三");
		s.study();
		WorkStudent w = new WorkStudent("李四");
		w.study();
	}
}

(3)运行结果如下图所示:


注意:super.name是在子类和父类有同名的成员变量时才需要写,如果子类中没有和父类同名的成员变量,就不用写super.name,直接写name即可,如果子类中没有这个变量,那么会自动寻找父类的成员变量。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

处女座的码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值