抽象类,接口
谁能举些例子?
声明类型的工作仍然由Java接口承担,但是同时给出一个Java 抽象类,且实现了这个接口,而其他同属于这个抽象类型的具体类可以选择实现这个Java接口,也可以选择继承这个抽象类,也就是说在层次结构中,Java 接口在最上面,然后紧跟着抽象类,哈,这下两个的最大优点都能发挥到极至了。这个模式就是“缺省适配模式”。 在Java语言API中用了这种模式,而且全都遵循一定的命名规范:Abstract +接口名。
[解决办法]
抽象类等于集合了普通类和接口
接口中只能申明方法。
至于例子百度吧。
[解决办法]
最显而易见的区别:抽象类里面的方法既可以是抽象的又可以是实现了的,而接口里面只能放方法的申明。
一个简单的举例,抽象类相当于一份菜谱,里面说明了该具体怎么炒菜,放多少作料;
接口相当于菜名,只是规定了那个菜的名称,到底该怎么炒,随便你;
明白了吗?
[解决办法]
Java抽象类和接口的理解
[解决办法]
package com.shadow.system.base.mvc;
import java.util.Collection;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
/**
* 安全用户实体
*
* @author shadow
*
*/
@SuppressWarnings("serial")
public abstract class AbstractUser implements UserDetails {
// ===========以下属性为安全架构属性===========
private String username; // 账号
private String password; // 密码
private boolean accountNonExpired = true; // 账号是否过期
private boolean accountNonLocked = true; // 账号是否锁定
private boolean credentialsNonExpired = true; //
private boolean enabled = true; // 是否可用
private Collection<? extends GrantedAuthority> authorities; // 权限集合
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public boolean isAccountNonExpired() {
return accountNonExpired;
}
public void setAccountNonExpired(boolean accountNonExpired) {
this.accountNonExpired = accountNonExpired;
}
public boolean isAccountNonLocked() {
return accountNonLocked;
}
public void setAccountNonLocked(boolean accountNonLocked) {
this.accountNonLocked = accountNonLocked;
}
public boolean isCredentialsNonExpired() {
return credentialsNonExpired;
}
public void setCredentialsNonExpired(boolean credentialsNonExpired) {
this.credentialsNonExpired = credentialsNonExpired;
}
public boolean isEnabled() {
return enabled;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
public void setAuthorities(
Collection<? extends GrantedAuthority> authorities) {
this.authorities = authorities;
}
public Collection<? extends GrantedAuthority> getAuthorities() {
return authorities;
}
// 获取当前登录用户详细信息必须重写hashCode和equals方法
public int hashCode() {
return this.getUsername().hashCode();
}
public boolean equals(Object object) {
boolean flag = false;
if (object instanceof UserDetails) {
UserDetails user = (UserDetails) object;
if (user.getUsername().equals(this.getUsername()))
flag = true;
}
return flag;
}
}
package com.shadow.mvc.model;
import java.util.List;
import com.shadow.system.base.mvc.AbstractUser;
/**
* 用户实体
*
* @author shadow
*
*/
@SuppressWarnings("serial")
public class User extends AbstractUser {
private Integer id; // 编号
private String name; // 姓名
private Integer level; // 优先级 1.最高
private Integer status; // 状态 1.正常 2.冻结 3.删除 4.异常
private String phone; // 联系电话
private String email; // 邮箱
private Dept dept; // 所属部门
private String site; // 网点
private List<Role> roles;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getLevel() {
return level;
}
public void setLevel(Integer level) {
this.level = level;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public List<Role> getRoles() {
return roles;
}
public void setRoles(List<Role> roles) {
this.roles = roles;
}
public Dept getDept() {
return dept;
}
public void setDept(Dept dept) {
this.dept = dept;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getSite() {
return site;
}
public void setSite(String site) {
this.site = site;
}
}
看起来相当专业
为什么要搞个AbstractUser?UserDetails也是抽象类吗?
List<String> list = new ArrayList<String>(); ---------- 这个叫多态吗?
是啊,到处都是接口
你举的例子是WebServices的应用吗?