比方說,我有這樣的方法正在創建一個被認爲是抽象的方法嗎?
void print(String msg){
System.out.println(msg);
}
自從我創建的版畫,我不必知道它是如何打印它的方法,因此這被認爲是一個抽象的,還是我得到這一切錯了嗎?
比方說,我有這樣的方法正在創建一個被認爲是抽象的方法嗎?
void print(String msg){
System.out.println(msg);
}
自從我創建的版畫,我不必知道它是如何打印它的方法,因此這被認爲是一個抽象的,還是我得到這一切錯了嗎?
如果你已經創建了這個方法只是隱藏底層的實現細節,那麼它是封裝。
你的方法不是抽象的,因爲它是一個具體的實現。您只能在界面中定義簽名或抽象類中的抽象方法時將其稱爲抽象。
從Java教程:
抽象方法是沒有實現聲明(沒有括號,並且隨後是分號)的方法,是這樣的:
abstract void moveTo(double deltaX, double deltaY);
任何抽象可以存在於思想或作爲想法,但沒有物理或具體的存在。當我在google中查找抽象的定義(https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=abstract%20definition)時,這就出現了。
我以此爲例,我想確定的是如果創建一個方法並且該方法執行復雜的事情,那麼該方法就是您想要執行的操作的抽象。就像,將員工保存到數據庫中,您只需調用saveEmployee()方法 –
您的界面「IPrintable」沒有任何意義。爲什麼你需要將一個字符串傳遞給可打印的對象?也許你的意思是'IPrinter'? – plalx
Thx指向。修正了。 – randominstanceOfLivingThing
在某種程度上是抽象的,任何使用它的東西都不需要知道它如何打印,只是它的確如此。一個更好的例子是使用回購。
interface UserRepo {
public User getUserByUsername(final String username);
public User updateUser(final User user);
}
然後,您對接口進行編碼。如果使用例如春天依賴注入:
@Service
public class UserService {
@Resource
private UserRepo userRepo;
public void updateUserEmail(final String username, final String newEmail) {
final User user = userRepo.getUserByUsername(username);
user.setEmail(newEmail);
userRepo.updateUser(user);
}
UserService不知道回購是怎麼想起來了,這是用戶,可以使用一個數據庫,平面文件,或web服務。
Here is some more info on Abstraction, with pictures!
Also this details the difference between abstraction and polymorphism
抽象是指具有多個可互換的行爲,例如通過使用接口的公共接口進行操作。所以,如果你有一個IPrinter接口,多個打印機繼承自己的打印版本,這將是抽象的 –
考慮在http://programmers.stackexchange.com上提出有關軟件開發的概念性問題 – everton
術語[抽象](https: //en.wikipedia.org/wiki/Abstraction_(software_engineering))指的是編程中的很多東西。一種方法絕對是一種控制抽象,因爲它抽象瞭如何完成打印的細節。 'String'參數類型將是一個數據抽象。這是所選擇的泛化應該適應大多數打印用例。你也可以使用'print(File file)'和'File'也是一個抽象概念,但很可能是抽象層次錯誤,因爲它可能是一個不好的概括。 – plalx