构造器的重载:
构造器是可以重载的
构成重载的要求:必须和类名相同,不能有返回值,void也不能写,形参列表要不同
方法的重载:
重载是在同一个类里面的,允许存在一个以上的同名方法,而参数列表不同,返回类型可以相同也可不同。
存在的原因:可以防止一个对象的同一类方法由于参数不同所造成的差异
特点:每个重载的方法或者构造函数的形参列表都必须是独有的,不能有同样的参数列表。
方法重载的规则:
- 被重载的方法 形参列表必须要不同(参数类型和类型);
- 可以改变返回类型;
- 可以改变访问修饰符;
- 可以声明新的或更广的检查异常;
- 方法能够在同一个类中或者在一个子类中被重载;
- 返回值类型不能作为重载函数的区分标准
方法重载的三要素:调用者(对象,类型)相同,方法名相同,形参列表不同
方法的重写:
子类对父类的可以访问的方法进行重新编写,但是不能修改返回值和形参,因为它是以父类为基础,添加自己的属性和方法。
好处:子类可以根据需要,定义自己的行为,即子类可以根据需要来实现父类的方法。
重写方法的规则:
- 参数列表和返回类型必须和被重写方法的一致,不能改变;
- 访问权限不能比父类中被重写的方法的访问权限更低;
- 父类的成员方法只能被它的子类重写;
- 声明为final的方法不能被重写;
- 声明为static的方法不能被重写,但是可以再次声明;
- 子类和父类在同一个包中,子类可以重写父类所有除了声明为private和final的方法;
- 子类和父类不在同一个包中,子类只能够重写父类的声明为public和protected的非final方法
- 重写的方法可以抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常;
- 构造方法不能被重写;
- 如果某个方法不能被继承,也就不能重写这个方法。
- 当父类的某个方法对子类来说不适用的时候,子类就可以重写父类的方法。
重载和重写的区别所在:
a) 方法重载是一个类中定义了多个方法名相同,而它们的参数数量不同或者数量相同而类型和次序不同;
b) 方法重载是子类存在与父类方法名相同,而参数个数与类型一样,返回值也一样的方法;
c) 方法重载是一个多态性表现,而方法重写是子类和父类的一种多态性表现。