Java面向对象之重写(覆写)

欢迎访问我的网站

意义

为什么要进行方法覆写?

1.父类中有一个walk方法,每个子类都应该有

new Person().move();

new Snak().move();

2.实际情况

不同的子类对于同一个移动的方法,表现形式不一样

补充:子类的动态描述父类的动态描述不一致

3.怎么办

把父类的方法拷贝到子类中,修改方法体,功能重新实现【覆盖,覆写Override】

直白点说就一句话:因为父类实现的方法,不满足子类的需求,所以需要重新写功能代码

语法

  1. 明确为什么需要复写:当父类的方法不满足子类的需求的时候,需要覆写

  2. 基本语法:直接将父类中需要覆写的方法复制放入子类,修改方法体

  3. 子类方法是否在覆写父类的方法,可以通过注解@Override验证

(1) 是覆写:编译通过

(2) 不是覆写:编译报错

  1. 注解理解
  1. 注解:跟注释很类似

  2. 注释:给程序员看的

  3. 注解:给java程序看的

细节

方法覆写的细节:

1.保证子类方法和父类方法的包括(方法签名)都要一致;

​ 2.方法访问权限:子类方法的访问权限(修饰符)不能够比父类方法的访问权限更低

​ private < 默认不写的 <protected <public

​ 3.如果父类中存在static修饰的方法,是不能被子类覆写的

​ 4.返回值类型:

​ [子类方法的返回值类型]

​ 可以是

​ [父类方法的返回值类型]

​ 的子类或者相等

​ 5.方法主体:

​ 方法覆写的时候子类方法可以和父类方法写的一样,但是这样就毫无意义了

Demo

public class _05Override {
		public static void main(String[] args) {
			Son son = new Son();		//实例化对象
			son.speak();		//调用son对象覆写后的speak方法
			A a = new A();
			a.speak();		//调用a对象覆写后的方法
		}
}
class  Test{
		String name;
		void speak(){		//定义返回值为Test的方法
		System.out.println("直到大厦崩塌");
		}
}
class  Son extends Test{		//继承Test方法
		@Override		//注解
		void speak(){		//覆写方法
			System.out.println("还会远吗");
		}
}
class A extends Test{	//继承Test方法
		@Override
		void speak(){		//覆写父类方法
			System.out.println("会沉寂吗");
		}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值