Override重写

一、作用

子类一旦重写父类中的某个方法,子类对象调用的是子类中重写的方法,对父类同名方法屏蔽。

二、@Override

强制检查下面的方法是否为重写,如果不是重写那么就会报错。

class A{
	public void or(){
		System.out.println("这不是重写。");
	}
}
class B extends A{
	@Override
	public void or(){
		System.out.println("这是重写。");
	}
}

三、不能被重写的内容

  1. private修饰的方法;
  2. final修饰的内容;
  3. 被static修饰的内容;
    如果子类中定义一个方法,在它的父类中有相同方法签名的静态方法,子类中的这个方法也必须是静态的,虽然可以定义这个方法,但是不是重写。

四、要求

  1. 方法签名必须完全相等
  2. 基本数据类型必须相等, 引用数据类型中子类的返回值类型不能大于父类的返回值类型
class A{
	public long or(){
		System.out.println("这不是重写。");
		return -1;
	}
}
class B extends A{
	public int or(){
		System.out.println("这是重写。");
		return -1;
	}
}
  1. 子类重写方法的的权限修饰符不能低于父类中这个方法的权限修饰符
class A{
   protected void or(){
   	System.out.println("这不是重写。");
   }
}
class B extends A{
   public void or(){
   	System.out.println("这是重写。");
   }
}

五、重写和重载的区别

   重载:

  • 同一个类中
  • 多个方法方法名相同
  • 方法签名不同


    重写:
  • 在不同的类中
  • 通过继承实现
  • 方法签名相同
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值