java重载和重写的区别?
1 个回答
浪漫固然重要,但真诚更胜一筹。木易#### 重写(Override) 重写是子类对父类方法进行重新定义的过程。重写的目的是为了子类能够根据需要对继承自父类的方法进行修改,以实现不同的行为。 **重写的特点:** 1. **发生在父类与子类之间**:子类继承了父类的方法,但希望对某个方法进行修改。 2. **方法名、参数列表、返回类型必须相同**:除了子类方法的返回类型可以是父类方法返回类型的子类。 3. **访问修饰符的限制**:子类方法的访问修饰符不能低于父类方法的访问修饰符(`public > protected > default > private`)。 4. **异常处理**:重写方法不能抛出新的检查异常,或者比被重写方法声明更宽泛的检查异常。 **示例代码:** ```java public class Father { public static void main(String[] args) { Son s = new Son(); s.sayHello(); } public void sayHello() { System.out.println("Hello"); } } class Son extends Father { @Override public void sayHello() { System.out.println("Hello by Son"); } } ``` **重写总结:** 1. 发生在父类与子类之间。 2. 方法名、参数列表、返回类型(子类方法的返回类型可以是父类方法返回类型的子类)必须相同。 3. 子类方法的访问修饰符不能低于父类方法的访问修饰符。 4. 重写方法不能抛出新的检查异常或者比被重写方法声明更宽泛的检查异常。 #### 重载(Overload) 重载是在一个类中定义多个同名的方法,但这些方法具有不同的参数列表(参数类型不同、参数个数不同或者参数顺序不同)。 **重载的特点:** 1. **发生在同一个类中**:同一个类中存在多个方法名相同但参数列表不同的方法。 2. **参数列表必须不同**:参数类型、参数个数、参数顺序必须有区别。 3. **返回类型可以相同也可以不同**:不能仅通过返回类型区分重载的方法。 **示例代码:** ```java public class Father { public static void main(String[] args) { Father s = new Father(); s.sayHello(); s.sayHello("Wintershii"); } public void sayHello() { System.out.println("Hello"); } public void sayHello(String name) { System.out.println("Hello " + name); } } ``` **重载总结:** 1. 重载是一个类中多态性的一种表现。 2. 重载要求同名方法的参数列表不同(参数类型、参数个数或者参数顺序不同)。 3. 重载的方法返回类型可以相同也可以不同,但无法以返回类型作为区分重载的方法的标准。 通过以上的解释和示例,希望你能清楚地理解重载和重写的区别。编辑于 2024-05-27 23:04 •IP属地 北京举报评论收藏1
公众号进入网站体验更佳

