① java裡面interface,implement和extends的作用和用法,多謝
你應該好好看看面向對象,然後在學學java基礎語法。
interface是一個介面,類似於C++中的純虛函數。
舉個簡單的例子,有一類東西,都具有同樣的行為,而這個共有的行為實現方式不一樣。
如:筆這類東西,都有共同的行為「寫」,鉛筆、毛筆、圓珠筆、鋼筆都有「寫」的功能,但實現起來不一樣。那麼我們就可以抽象出一個介面「筆」
interface 筆{
void 寫();
}
implement的意思是指在鉛筆、毛筆、圓珠筆要有」寫「的這個功能,就需要實現介面」筆「的」寫「功能。而這個關鍵字implement就是實現的意思,如:
class 鉛筆 implement 筆{
void 寫(){
用鉛芯畫
}
}
class 鋼筆 implement 筆{
void 寫(){
用墨水畫
}
}
而你提到的extends是指一個繼承關系,子類繼承父類的功能。舉個簡單的例子:父類」燈「具有」發光「的功能,而子類"台燈",只需要extends父類」燈「就擁有了發光的共功能。
介面和繼承的區別,由於時間有限,你參考這篇帖子
http://bruce-ko.javaeye.com/blog/420254
② java implement什麼作用
extends是繼承父類,只要那個類不是聲明為final或者那個類定義為abstract的就能繼承,JAVA中不支持多重繼承,但是可以用介面來實現,這樣就要用到implements,繼承只能繼承一個類,但implements可以實現多個介面,用逗號分開就行了
比如
class A extends B implements C,D,E
③ java中implements是什麼意思在什麼時候使用
implements實現的意思。在Java中是實現介面時使用implements。
extends是繼承父類,只要那個類不是聲明為final或者那個類定義為abstract的就能繼承
JAVA中不支持多重繼承,但是可以用介面來實現,這樣就要用到implements,繼承只能繼承一個類,
但implements可以實現多個介面,用逗號分開就行了比如:
classAextendsBimplementsC,D,E
介面實現的注意點:
a.實現一個介面就是要實現該介面的所有的方法(抽象類除外)。
b.介面中的方法都是抽象的。
c.多個無關的類可以實現同一個介面,一個類可以實現多個無關的介面。
與Extends的不同
extends,可以實現父類,也可以調用父類初始化this.parent()。而且會覆蓋父類定義的變數或者函數。這樣的好處是:架構師定義好介面,讓工程師實現就可以了。整個項目開發效率和開發成本大大降低。implements,實現父類,子類不可以覆蓋父類的方法或者變數。即使子類定義與父類相同的變數或者函數,也會被父類取代掉。
這兩種實現的具體使用,是要看項目的實際情況,需要實現,不可以修改implements,只定義介面需要具體實現,或者可以被修改擴展性好,用extends。
④ java extend 和 implements 的區別
一個是繼承,一個是實現介面,繼承這個可以理解為繼承父類的方法,父類中的方法可以在子類中用到,super(),實現介面就是在介面中定義了方法,這個方法要你自己去實現,介面可以看作一個標准,比如定義了一個動物的介面,它裡面有吃(eat())這個方法,你就可以實現這個方法implements,這個方法是自己寫,可以是吃蘋果,吃梨子,香蕉,或者其他的。IMPLEMENTS就是具體實現這個介面。
⑤ JAVA中implement和extends的區別
implement是實現介面的,
extends是繼承用的。一個類可以實現多個介面,但是只能繼承一次
⑥ java中implements和Interface的區別
Implements 是實現的意思 而Interface 是一個介面
Implements 有點繼承的意思 類與類之間就是繼承 而類與介面之間就是實現(類實現介面)
⑦ JAVA語言的Implement關鍵字用的時候為什麼變成了Implements
這個關鍵字是聲明介面用的,在JAVA語言里,一個類可以聲明多個借口,所以使用關鍵字Implements表示聲明介面,後面跟介面的名字,多個介面使用符號","隔開.
⑧ Java三大框架的 Dao、ImplementDao、Service、ImplementService分別有什麼作用詳細點。加分(男人說的).
其實 service,都是mvc模式中的m,就是 model,service主要處理邏輯,處理和資料庫的交互,就是存取數據。那為什麼在加一層借口呢,就是為了分的更清楚啊,而且這樣可以做到更好的強內聚,弱耦合,編碼代碼的修改和重構。
⑨ java裡面 implements Serializable有什麼作用
對象的串列化(Serialization)
一、串列化的概念和目的
1.什麼是串列化
對象的壽命通常隨著生成該對象的程序的終止而終止。有時候,可能需要將對象的狀態保存下來,在需要時再將對象恢復。我們把對象的這種能記錄自己的狀態以便將來再生的能力。叫作對象的持續性(persistence)。對象通過寫出描述自己狀態的數值來記錄自己 ,這個過程叫對象的串列化(Serialization) 。串列化的主要任務是寫出對象實例變數的數值。如果交量是另一對象的引用,則引用的對象也要串列化。這個過程是遞歸的,串列化可能要涉及一個復雜樹結構的單行化,包括原有對象、對象的對象、對象的對象的對象等等。對象所有權的層次結構稱為圖表(graph)。
2.串列化的目的
Java對象的單行化的目標是為Java的運行環境提供一組特性,如下所示:
1) 盡量保持對象串列化的簡單扼要 ,但要提供一種途徑使其可根據開發者的要求進行擴展或定製。
2) 串列化機制應嚴格遵守Java的對象模型 。對象的串列化狀態中應該存有所有的關於種類的安全特性的信息。
3) 對象的串列化機制應支持Java的對象持續性。
4) 對象的串列化機制應有足夠的 可擴展能力以支持對象的遠程方法調用(RMI)。
5) 對象串列化應允許對象定義自身 的格式即其自身的數據流表示形式,可外部化介面來完成這項功能。
二、串列化方法
從JDK1.1開始,Java語言提供了對象串列化機制 ,在java.io包中,介面Serialization用來作為實現對象串列化的工具 ,只有實現了Serialization的類的對象才可以被串列化。
Serializable介面中沒有任何的方法。當一個類聲明要實現Serializable介面時,只是表明該類參加串列化協議,而不需要實現任何特殊的方法。下面我們通過實例介紹如何對對象進行串列化。
1.定義一個可串列化對象
一個類,如果要使其對象可以被串列化,必須實現Serializable介面。我們定義一個類Student如下:
importjava.io.Serializable;
{
intid;//學號
Stringname;//姓名
intage;//年齡
Stringdepartment;//系別
publicStudent(intid,Stringname,intage,Stringdepartment){
this.id=id;
this.name=name;
this.age=age;
this.department=department;
}
}
2.構造對象的輸入/輸出流
要串列化一個對象,必須與一定的對象輸出/輸入流聯系起來,通過對象輸出流將對象狀態保存下來,再通過對象輸入流將對象狀態恢復。
java.io包中,提供了ObjectInputStream和ObjectOutputStream將數據流功能擴展至可讀寫對象 。在ObjectInputStream 中用readObject()方法可以直接讀取一個對象,ObjectOutputStream中用writeObject()方法可以直接將對象保存到輸出流中。
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.ObjectInputStream;
importjava.io.ObjectOutputStream;
publicclassObjectSer{
publicstaticvoidmain(Stringargs[])throwsIOException,
ClassNotFoundException{
Studentstu=newStudent(981036,"LiuMing",18,"CSD");
FileOutputStreamfo=newFileOutputStream("data.ser");
ObjectOutputStreamso=newObjectOutputStream(fo);
try{
so.writeObject(stu);
so.close();
}catch(IOExceptione){
System.out.println(e);
}
stu=null;
FileInputStreamfi=newFileInputStream("data.ser");
ObjectInputStreamsi=newObjectInputStream(fi);
try{
stu=(Student)si.readObject();
si.close();
}catch(IOExceptione)
{
System.out.println(e);
}
System.out.println("StudentInfo:");
System.out.println("ID:"+stu.id);
System.out.println("Name:"+stu.name);
System.out.println("Age:"+stu.age);
System.out.println("Dep:"+stu.department);
}
}
運行結果如下:
Student Info:
ID:981036
Name:LiuMing
Age:18
Dep:CSD
在這個例子中,我們首先定義了一個類Student,實現了Serializable介面 ,然後通過對象輸出流的writeObject()方法將Student對象保存到文件 data.ser中 。之後,通過對家輸入流的readObjcet()方法從文件data.ser中讀出保存下來的Student對象 。從運行結果可以看到,通過串列化機制,可以正確地保存和恢復對象的狀態。
三、串列化的注意事項
1.串列化能保存的元素
串列化只能保存對象的非靜態成員交量,不能保存任何的成員方法和靜態的成員變數,而且串列化保存的只是變數的值,對於變數的任何修飾符都不能保存。
2.transient關鍵字
對於某些類型的對象,其狀態是瞬時的,這樣的對象是無法保存其狀態的。例如一個Thread對象或一個FileInputStream對象 ,對於這些欄位,我們必須用transient關鍵字標明,否則編譯器將報措。
另外 ,串列化可能涉及將對象存放到 磁碟上或在網路上發達數據,這時候就會產生安全問題。因為數據位於Java運行環境之外,不在Java安全機制的控制之中。對於這些需要保密的欄位,不應保存在永久介質中 ,或者不應簡單地不加處理地保存下來 ,為了保證安全性。應該在這些欄位前加上transient關鍵字。
下面是java規范中對transient關鍵字的解釋:
The transient marker is not fully specified by The Java Language Specification but is used in object serialization to mark member variables that should not be serialized.
以下是transient的一個應用舉例:
//LoggingInfo.java
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.ObjectInputStream;
importjava.io.ObjectOutputStream;
importjava.util.Date;
.io.Serializable{
=1L;
privateDateloggingDate=newDate();
privateStringuid;
privatetransientStringpwd;
LoggingInfo(Stringuser,Stringpassword){
uid=user;
pwd=password;
}
publicStringtoString(){
Stringpassword=null;
if(pwd==null){
password="NOTSET";
}else{
password=pwd;
}
return"logoninfo: "+"user:"+uid+" loggingdate:"+loggingDate.toString()+" password:"+password;
}
publicstaticvoidmain(String[]args){
LoggingInfologInfo=newLoggingInfo("MIKE","MECHANICS");
System.out.println(logInfo.toString());
try{
ObjectOutputStreamo=newObjectOutputStream(newFileOutputStream("logInfo.out"));
o.writeObject(logInfo);
o.close();
}catch(Exceptione){//dealwithexception
}
//Toreadtheobjectback,wecanwrite
try{
ObjectInputStreamin=newObjectInputStream(newFileInputStream("logInfo.out"));
LoggingInfologInfo1=(LoggingInfo)in.readObject();
System.out.println(logInfo1.toString());
}catch(Exceptione){//dealwithexception
}
}
}
⑩ java中的implement怎麼用
java中能夠定義介面 介面是一種變相的抽象類 介面的定義可以實現java中的多繼承問題 java中類與類之間只能單繼承 關鍵字 是extends 而對於類來說可以實現介面 關鍵字就用implements 表示該類實現介面 介面與介面是也可以用extends來繼承
extends是繼承父類,只要那個類不是聲明為final或者那個類定義為abstract的就能繼承,JAVA中不支持多重繼承,但是可以用介面來實現,這樣就要用到implements,繼承只能繼承一個類,但implements可以實現多個介面,用逗號分開就行了
比如
class A extends B implements C,D,E