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表!

 

posted @   张占岭  阅读(1055)  评论(1编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
历史上的今天:
2013-03-21 说说IUnitOfWork~我的IUnitOfWork+Repository架构
2013-03-21 基础才是重中之重~值类型和引用类型
2012-03-21 你必须要知道的架构知识~第五章 依赖住入在这个时候出场了
点击右上角即可分享
微信分享提示