Java基础知识学习菜鸟入门第二十九天——Java方法重写的归纳篇(完整版)

Java方法的重写归纳篇

方法重写的定义:
  • 对于方法的重写,我们在继承关系中存在方法重写,在子类继承父类之后,不满足父类提供的功能,子类对于父类继承过来的某些方法可以进行重写(覆盖),对于父类的一些行为进行扩展

tip:如果父类是抽象类时,要重写抽象类中的所有抽象方法

问题:父类都知道子类要重写这个方法了,为什么还多此一举的去定义这个方法?

  • 对于普通类中的继承关系发生之后,定义重写方法为了满足多态的前提。
  • 对于抽象类中的继承关系发生之后,定义重写方法为了让子类在设计的时候避免子类的随意性。
方法重写的条件:
  • 方法重写的前提:
    • 一定要发生继承关系
    • 子类中的方法和父类中的方法同名
    • 参数列表要一模一样
    • 返回值类型一模一样
  • 是否是重写方法的判定依据:
    • 修饰符:子类>=父类【可见性越大我们称之为修饰符越大(public >protected>默认的>private)】
    • 返回值:子类<=父类【如果是基本数据类型要一致,如果是引用类型子类<=父类】
    • 参数列表:子类==父类【一模一样】
    • 抛出异常:子类<=父类【子类抛出的异常类一定要小于或等于父类抛出异常类】

代码演示:

//以抽象父类举例
//抽象父类
abstract class Animals {
	String place="房间";
	// 父类中的方法被重写时,父类方法修饰符不可以用private
	abstract void sing();

	public void eat() {
		System.out.println("在吃饭");
	}
	//父类中的方法重写后,子类的参数列表需要和父类一摸一样
	public void method(String  place) {
		System.out.println("我在"+place+"看书");
	}
}

//子类
class Dog extends Animals {
	// 重写了父类中的方法
	public void sing() {
		System.out.println("小狗在汪汪的唱歌");
	}
	public void eat() {
		System.out.println("我在吃骨头饭");
	}
	public void method(String  place) {
		System.out.println("我在"+place+"看书");
	}
}

//子类
class Cat extends Animals {
	// 重写了父类中的方法
	protected void sing() {
		System.out.println("小猫在喵喵的唱歌");
	}
	public void eat() {
		System.out.println("我在吃猫粮");
	}
	public void method(String  place) {
		System.out.println("我在"+place+"看书");
	}
}

//测试类
public class Test1 {
	public static void main(String[] args) {
		Dog one = new Dog();
		function(one);
		Cat two = new Cat();
		function(two);
	}

	// 使用多态的特性,编译看左边,运行看右边
	public static void function(Animals a) {// Animals a=new Dog();Animals a=new Cat();
		a.sing();
		a.eat();
		a.method("房间");
	}
}
//执行结果:
小狗在汪汪的唱歌
我在吃骨头饭
我在房间看书
小猫在喵喵的唱歌
我在吃猫粮
我在房间看书

返回值和抛出异常,后续在你写项目的时候会用到,在此,我就不举例说明,知道就可以

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

QZP51ZX

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

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

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

打赏作者

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

抵扣说明:

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

余额充值