首页 > 代码库 > Java~类,抽象类和接口

Java~类,抽象类和接口

最近有空就着迷于java的世界,希望可以把自己的lind重构一个java版本出来,虽然遇到一些小问题,但也都解决了,还是那句话,知识需要积累,程序员需要一个追求!

  1. 抽象类
  2. 接口
  3. 泛型类
  4. 泛型接口
  5. 非泛型类继承泛型类后,输出泛型的名称

一 类,与C#类似,只是去除了属性的概念,由方法去操作指定的字段

package lind.Test;public class User extends Entity {    public User(int id, String name) {        super(1);        this.name = name;    }    private String name;    /**     * @return the name     */    public String getName() {        return name;    }    /**     * @param name     *            the name to set     */    public void setName(String name) {        this.name = name;    }}

二 抽象类 一组类型的抽象,公开一些方法和字段供子类使用

package lind.Test;/** * 实体 *  * @author Administrator * */public abstract class Entity {    public Entity(int id) {        this.setId(id);    }    /**     * @return the id     */    public int getId() {        return Id;    }    /**     * @param id     *            the id to set     */    public void setId(int id) {        Id = id;    }    private int Id;}

三 接口 规定了一组操作的行为,如仓储CURD操作,它可能会公开添加,删除,修改,查询等方法

package lind.Repository;import java.util.ArrayList;import java.util.function.Predicate;public interface IRepository<T> {    /**     * 添加     *      * @param entity     */    void Insert(T entity);    /**     * 更新     *      * @param entity     */    void Update(T entity);    /**     * 删除     *      * @param entity     */    void Delete(T entity);    /**     * 返回列表     *      * @return     */    ArrayList<Object> GetModel(Predicate<T> predicate);    ArrayList<Object> GetModel();}

四 泛型类和泛型接口, 这个概念不如Csharp灵活,在使用过程中需要注意,当然含义还是一样的,主要是对一类功能的抽象和代替,在实现时,直接传对应的类型即可,一般我们的仓储对象,如用户仓储,可以要继承一个泛型的仓储类,如下

package lind.Test;//用户仓储public class UserDao extends JdbcDaoSupport<User> {    }

五 非泛型类继承泛型类后,输出泛型的名称

这是一个小技巧,主要是泛型类中去拿里面的类型,需要注意的是,必须有一个非泛型类去继承它,并实例化它,这个类型才可以被解析,这一点,确实无法和Csharp相比

技术分享

 

感谢各位耐心的阅读,下次我们将介绍Hash表!

 

Java~类,抽象类和接口