package chapter4.demo49; // 自定义异常类 class UserException extends Exception { public UserException(String message) { super(message); } } // 用户操作接口 interface UserOperation { void changePassword(String newPassword) throws UserException; void showInfo(); } // 抽象用户类 abstract class AbstractUser implements UserOperation { protected String username; // 用户名 protected String password; // 密码 protected String userType; // 用户类型 // 构造方法 public AbstractUser(String username, String password) { this.username = username; this.password = password; } public String getUsername() { return username; } // 检查密码是否正确 public boolean checkPassword(String password) { return this.password.equals(password); } @Override public void showInfo() { System.out.println("用户名:" + username + ",用户类型:" + userType); } } // 普通用户类 class NormalUser extends AbstractUser { public NormalUser(String username, String password) { super(username, password); this.userType = "普通用户"; } @Override public void changePassword(String newPassword) throws UserException { if (newPassword.length() < 6) { throw new UserException("密码长度不能小于6位"); } this.password = newPassword; } } // 管理员类 class AdminUser extends AbstractUser { public AdminUser(String username, String password) { super(username, password); this.userType = "管理员"; } @Override public void changePassword(String newPassword) throws UserException { if (newPassword.length() < 8) { throw new UserException("管理员密码长度不能小于8位"); } this.password = newPassword; } }