Java~類,抽象類和介面
阿新 • • 發佈:2018-12-30
最近有空就著迷於java的世界,希望可以把自己的lind重構一個java版本出來,雖然遇到一些小問題,但也都解決了,還是那句話,知識需要積累,程式設計師需要一個追求!
- 類
- 抽象類
- 介面
- 泛型類
- 泛型介面
- 非泛型類繼承泛型類後,輸出泛型的名稱
一 類,與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表!