zoukankan      html  css  js  c++  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表!

  • 相关阅读:
    python 可变数据类型&不可变数据类型
    java异常 总结
    java 进制转换
    在virtualbox下使用vm映像文件
    关于C语言中单双引号的问题
    php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
    fastadmin model关联模型 关联查询问题
    php 解决跨域问题
    微信支付相关
    TP5之事务处理
  • 原文地址:https://www.cnblogs.com/lori/p/6597376.html
Copyright © 2011-2022 走看看