覆盖 @Override

覆盖,简单来说就是在子类中把父类的某个实例方法复制过来(不能是static或者private的方法)以实现子类自己特有的方法。需要注意几点:

  • 形参的类型、个数、顺序要与父类一致;
  • 子类的访问控制符可见性大于等于父类访问控制符的可见性,如父类是默认访问控制符,则子类可以是public、protected。
  • 子类不能比父类抛出更多的异常,如父类throws IOException ,则子类不能throws Exception。
  • 返回值类型分几种情况:
      • 父类返回值是void,子类也是void;
      • 如果是基本数据类型或者包装类则要与父类完全相同,比如父类返回值类型是 int型,则子类也必须是 int型。父类返回值类型是 Integer,则子类也要是Integer;
      • 如果是其他类型的话,子类的返回值类型可以是父类返回值类型的子类(包括本身),比如父类返回值类型是Object,子类返回值类型可以是Object或者String。

方法体可以重写,也可以继承父类方法体。需要继承就在子类的方法体内使用super。比如父类有一个方法为:

//父类方法
public void sayHello(String name) {
    System.out.println("Hello! " + name)
}

子类需要继承父类方法的话可以这样写:

1 @Override //@override注解可以显式地指出这是一个覆盖方法,另外可以让编译器帮自己检查是否正确地覆盖了父类中的方法。当然也可以不用写。
2 public void sayHello(String name) {
3     //继承父类方法(也可以写在子类方法的下面)
4     super.sayHello(name); 
5     //子类自己的方法
6    System.out.println(name + ", Hello!");
7 }

因为Java中形参是没有默认值的,所以子类覆盖方法形参的个数需要与父类相同,在python中形参的个数是可以与父类中不同的,当然前提是其他形参都得有默认值??

转载于:https://www.cnblogs.com/runrua/p/10984306.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值