重写(@Override)
- 重写需要借助继承/抽象类/接口实现
- 方法名、形参列表相同(形参列表类型、顺序相同即可,名称随意)
- 子类/实现类返回值类型 <= 父类/接口类
- 子类/实现类抛出异常类型 <= 父类/接口类
- 子类/实现类访问权限 >= 父类/接口类
- 类(实例)方法重写后还是类(实例)方法
- 父类private修饰的方法无法重写,即使方法名、形参列表相同也不是重写,是重新定义
// 所有的类都直接/间接继承了Object类,所以可以再User类中重写toString()方法
public class User {
/** 用户ID */
private String userId;
/** 用户名称 */
private String userName;
/** 城市ID */
private String cityId;
@Override
public String toString() {
return "User{" +
"userId='" + userId + '\'' +
", userName='" + userName + '\'' +
", cityId='" + cityId + '\'' +
'}';
}
}
重载
- 方法名相同,参数列表不同(与返回值类型、修饰符无关)
// 构造函数就是方法重载的体现
public User() {}
public User(String userId) {this.userId = userId;}
public User(String userId, String userName) {
this.userId = userId;
this.userName = userName;
}