重写(Override)与重载(Overload)的区别
Java确定一个方法的三要素:
①调用者,类还是对象。
②方法名。
③ 形参列表。
方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。
重载主要发生在同一类的多个同名方法之间。
重写主要发生在子类和父类的同名方法之间。
方法重载:在同一类中包含了两个或两个以上的方法,其方法名相同,但形参列表不同。
重载要求两同一不同:同一个类中方法名相同,形参列表不同(参数的顺序,类型,个数不同)。至于方法的其他部分,如返回值类型、修饰符等,与方法重载无关。
重载是让类以统一的方式处理不同类型数据的一种手段。重载是一个类中多态性的一种表现。
方法重写也叫方法覆盖,是一种子类包含与父类同名方法的现象。
方法重写遵循“两同两小一大”的原则:
“两同”指方法名相同,形参列表相同;
“两小”指子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等。
“一大”指子类方法的访问权限应比父类方法的访问权限更大或相等。
有两点要注意:
1、覆盖方法和被覆盖方法要么都是类方法,要么都是实例方法。
2、如果父类方法是private权限,则该方法对子类方法是隐藏的,无法重写该方法。
Java确定一个方法的三要素:
①调用者,类还是对象。
②方法名。
③ 形参列表。
方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。
重载主要发生在同一类的多个同名方法之间。
重写主要发生在子类和父类的同名方法之间。
方法重载:在同一类中包含了两个或两个以上的方法,其方法名相同,但形参列表不同。
重载要求两同一不同:同一个类中方法名相同,形参列表不同(参数的顺序,类型,个数不同)。至于方法的其他部分,如返回值类型、修饰符等,与方法重载无关。
重载是让类以统一的方式处理不同类型数据的一种手段。重载是一个类中多态性的一种表现。
方法重写也叫方法覆盖,是一种子类包含与父类同名方法的现象。
方法重写遵循“两同两小一大”的原则:
“两同”指方法名相同,形参列表相同;
“两小”指子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等。
“一大”指子类方法的访问权限应比父类方法的访问权限更大或相等。
有两点要注意:
1、覆盖方法和被覆盖方法要么都是类方法,要么都是实例方法。
2、如果父类方法是private权限,则该方法对子类方法是隐藏的,无法重写该方法。
全部评论
感谢楼主,终于明白这两个了
相关推荐
点赞 评论 收藏
分享



