Java——重写与重载的区别

1.重写(Override)是发生在当一个子类继承一个父类的时候,可以重写覆盖原来父类里面的方法,这个方法和父类的方法名称一定要相同,参数也要相同,不然就不叫重写了。注意:有final修饰的方法不可以重写。”
例如:

public class Fu{

    public static void main(String[] args) {
        Zi z = new Zi();
        z.sayHi();
    }

    public void sayHi() {
        System.out.println("Hello");
    }
}

class Zi extends Fu{

    @Override
    public void sayHi() {
        System.out.println("bay bay");
    }

}


重写 总结:

1)重写后的方法访问权限(public protected 默认 private)需与父类相同或大于父类
2)父类中final、static修饰的方法,不允许被重写,但可以被继承
3)子类重写的方法,不允许static修饰
4)重写方法可以使用@Override注解
5)重写后的子类方法名必须与父类一致,参数列表除名字外其他必须一致
6)如果父类返回值类型为void或基本数据类型,则重写后的方法必须和父类保持一致
7)如果父类返回值类型为引用类型,则重写后的方法返回值要么与父类一致,要么是父类的子类


2. 重载(Overload)指的是在同一个作用域内,两函数的函数名可以相同,但是参数不能完全相同,可以是参数类型不同或者是参数个数不同,至于返回值,不影响重载。 
例如:

public class Fu {

    public static void main(String[] args) {
        
        Fu f = new Fu();
        f.sayHi();
        f.sayHi(20);

    }

    public void sayHi() {
        System.out.println("Hello");
    }

    public void sayHi(int age) {
        System.out.println("今年"+age+"岁");
    }
}


重载 总结:

1.同一个类
2.多个方法的方法名字相同
3.参数列表不同
          参数个数不同
          参数的数据类型不同
          不同数据类型的参数顺序不同
方法的重载和修饰符无关
方法的重载和有无返回值无关
方法的重载和返回值类型无关
方法的重载和参数名无关

方法的重载是一个类中多态的一种体现

面试题,问:重载(Overload)和重写(Override)的区别?
答:1、重载发生在本类,重写发生在父类与子类之间;

       2、重载的方法名必须相同,重写的方法名相同且返回值类型必须相同;

       3、重载的参数列表不同,重写的参数列表必须相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值