首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

抽象类,接口解决办法

2013-08-11 
抽象类,接口谁能举些例子?声明类型的工作仍然由Java接口承担,但是同时给出一个Java 抽象类,且实现了这个接

抽象类,接口


谁能举些例子?

声明类型的工作仍然由Java接口承担,但是同时给出一个Java 抽象类,且实现了这个接口,而其他同属于这个抽象类型的具体类可以选择实现这个Java接口,也可以选择继承这个抽象类,也就是说在层次结构中,Java 接口在最上面,然后紧跟着抽象类,哈,这下两个的最大优点都能发挥到极至了。这个模式就是“缺省适配模式”。 在Java语言API中用了这种模式,而且全都遵循一定的命名规范:Abstract +接口名。
[解决办法]
抽象类等于集合了普通类和接口
接口中只能申明方法。
至于例子百度吧。
[解决办法]
最显而易见的区别:抽象类里面的方法既可以是抽象的又可以是实现了的,而接口里面只能放方法的申明。
一个简单的举例,抽象类相当于一份菜谱,里面说明了该具体怎么炒菜,放多少作料;
                接口相当于菜名,只是规定了那个菜的名称,到底该怎么炒,随便你;
明白了吗?
[解决办法]
Java抽象类和接口的理解
[解决办法]

引用:
Quote: 引用:

抽象类等于集合了普通类和接口
接口中只能申明方法。
至于例子百度吧。


最好是工作中的例子,



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也是抽象类吗?
UserDetails不是继续的接口吗?抽象类必须用abstract声明
[解决办法]
引用:
 List<String> list = new ArrayList<String>(); ---------- 这个叫多态吗?
叫。
[解决办法]
接口可以继承多个,其他的只能单继承  这算是很大的区别了
接口是 对象间调用方法时 连接的桥梁
比如:
电子商城、图库、书城等消费网站 ,在你要卖货付款时 就会调用一些淘宝、银行等商户接口 ,你只需把parter、key 、订单等一些参数放到人家给你的接口就行了,到时给你返回个结果你接收就是了。至于钱是怎么打到商户账户的,你无需知道
再比如:
博客、微信分享等功能也是调用接口实现   

抽象类   其实就是不完整的类,需要他的子孙们来实现他的愿望
------解决方案--------------------


引用:
 是啊,到处都是接口

你举的例子是WebServices的应用吗?

我对webService这个概念很模糊,上头也是web项目调用接口的简单实例,我个人感觉 接口就是两个部门 交互信息的关卡   你给我东西 我帮你办事 就这么回事

热点排行