接口和抽象类的定义方式举例说明节能

2020-09-30 合山装修公司

接口定义

关于java的接口定义方式,以下三种情况下可以采用接口定义方式:

1.接口中声明的变量全部为final和static类型的,并且这个接口的作用在于定义一些值不能改变的变量。

举个例子:

publicinterfaceObjectConstants{

publicstaticfinalStringSPACE=newString("");

publicstaticfinalcharFORMFEED='\f';

}

2.接口中只定义可供实现的抽象方法

va

publicinterfaceEventListener{

publicvoidha最终难逃恢恢法。尊重法律ndleEvent(Eventevt);

}

va

ng;

publicinterfaceRunnable{

publicabstractvoidrun();

}

3.还有一种方式是上述两种方式的组合,但采访中在IT公司上班的辛先生告诉如非必要一般会将这样一个接口定义拆分成两个接口定义

抽象类的定义

1.如果一个类包含一个接口但是不完全实现接口定义的方法,那么该类必须定义成abstract型

例如va类的定义方式:

;

publicabstractclassInputStreamimplementsCloseable{

//SKIP_BUFFER_SIZEisusedtodeterminethesizeofskipBuffer

privatestaticfinalintSKIP_BUFFER_SIZE=2048;

//skipBufferisinitializedinskip(long),ifneeded.

privatestaticbyte[]skipBuffer;

publicabstractintread()throwsIOException;

publicintread(byteb[])throwsIOException{

returnread(b,0,ngth);

}

publicintread(byteb[],intoff,intlen)throwsIOException{

if(b==null){

thrownewNullPointerException();

}elseif((off0)||(ngth)||(len0)

((off+len)ngth)||((off+len)0)){

thrownewIndexOutOfBoundsException();

}elseif(len==0){

return0;

}

intc=read();

if(c==-1){

return-1;

}

b[off]=(byte)c;

inti=1;

try{

for(;ilen;i++){

c=read();

if(c==-1){

break;

}

if(b!=null){

b[off+i]=(byte)c;

}

}

}catch(IOExceptionee){

}

returni;

}

publiclongskip(longn)throwsIOException{

longremaining=n;

intnr;

if(skipBuffer==null)

skipBuffer=newbyte[SKIP_BUFFER_SIZE];

byte[]localSkipBuffer=skipBuffer;

if(n=0){

return0;

}

while(remaining0){

nr=read(localSkipBuffer,0,

(int)n(SKIP_BUFFER_SIZE,remaining));

if(nr0){

break;

}

remaining-=nr;

}

returnn-remaining;

}

publicintavailable()throwsIOException{

return0;

}

publicvoidclose()throwsIOException{}

publicsynchronizedvoidmark(intreadlimit){}

publicsynchronizedvoidreset()throwsIOException{

thrownewIOException("mark/resetnotsupported");

}

publicbooleanmarkSupported(){

returnfalse;

}

}

2.抽象类的方法体中只定义抽象的方法,例如va

ng;

publicclassAbstractMethodErrorextendsIncompatibleClassChangeError{

publicAbstractMethodError(){

super();}

publicAbstractMethodError(Strings){

super(s);}

} 查看本文来源

先声药业登陆港股
小孩子不爱吃饭用薏芽健脾凝胶会有效果吗
鹰潭看白癜风医院哪家好
为你推荐