1. 程式人生 > >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表!