对重写和重载的思考

在课上听老师讲了关于方法重写和方法重载的问题,结合上课所给示例,查阅资料后对方法重写和重载有了一些思考。

一.首先是方法重写的概念

方法重写:子类从父类中继承方法,有时需要修改父类中定义的方法的实现。也就是说,可以在子类中继承或者修改父类中的方法。

重写时需要注意:

1.重写的方法必须与被重写的方法具有一样的签名,以及一样的或者是兼容的返回类型(重写方法的返回类型可以是被重写方法的返回类型的子类)。

2.声明为final,static的方法不能被重写,但是静态方法可以继承。

3.只有实例方法可以访问时,才能被重写。

 

重写的优势:重写建立在继承关系上。子类既可以根据自身需要,隐藏和访问父类的方法,也可以覆盖继承父类的方法,重写实现了对类中方法的扩充。

 

 

二.方法重载:重载意味着使用同样的名字但是不同的签名来定义多个方法。

与重写的区别在于重写必须要使用一样的签名或者兼容的返回类型在子类中定义方法。

 

注意:

1.方法的重载可以发生在同一个类中,也可以发生在具有继承关系的不同类中,而方法的重写发生在具有继承关系的不同类中。

2.方法重载具有相同的名字但是不同的参数列表,而方法重写具有相同的签名。

重写与重载举例:

class B{
    public void m(double a){
    System.out.println(a);
 }
}
​
class A extends B{
   public void m(double a){
   System.out.println(a*2);
  }
}

​

上面这个例子这是对类B中的方法进行重写

​
class A extends B{
   public void m(int a){
   System.out.println(a*2);
  }
}

​

上面这个例子是对类B中的方法进行重载

三.有一种特殊的java语法,称为重写标注,在LAB2中已经使用过,即在子类方法的前面放一个@Override

父类中有此方法

public boolean add(L vertex);

那么在子类中实现时在方法之前加Override即可实现重写:

@Override 
public boolean add(L vertex) {
        if(vertices().contains(vertex)){
            System.out.println("vertex already exist");
            return false;
        }
        else {
            checkRep();
            return vertices.add(vertex);
        }
    }

要注意的是,如果有此标注的方法没有重写父类的方法的话,编译器将会报告一个错误。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值