抽象方法只能在抽象類中,不能使用static和private修飾符深碱,一般不提供具體實(shí)現(xiàn)腹鹉,繼承類只有實(shí)現(xiàn)了抽象類的所有抽象方法才能實(shí)例化
-
權(quán)限修飾符
- 默認(rèn)的修飾符權(quán)限:不同包的類或者不同包的子類都不可見,其他的類都可見
- protected修飾符:不同包的類不可見绞蹦,同包或不同包的子類都可見
static final 靜態(tài)常量力奋,多個(gè)類示例共享
值傳遞,傳遞的參數(shù)是按照值的備份進(jìn)行傳遞的幽七;引用傳遞景殷,傳遞的是引用
-
可以實(shí)現(xiàn)多個(gè)接口,但只能繼承一個(gè)抽象類澡屡;抽象類可以提供成員的實(shí)現(xiàn)細(xì)節(jié)猿挚,而接口不能;可以再以后的版本中隨意為抽象類添加成員(非抽象方法)驶鹉,而接口不能绩蜻;
- 抽象類中的非抽象方法,子類可以不必重載
子類不能重寫父類的final或static方法梁厉;子類必須重寫父類中的abstract方法或者也聲明為abstract方法辜羊;子類重寫父類方法時(shí),方法聲明必須和父類一樣
-
如果需要克隆的對(duì)象中包含引用類型词顾,則需要使用深克掳送骸;否則肉盹,使用淺克隆
- 深克挛羟:采用序列化的實(shí)現(xiàn);依次克隆各個(gè)可變的引用類型域
-
內(nèi)部類
- 如果要在外部類的非靜態(tài)方法之外的任意位置創(chuàng)建某個(gè)內(nèi)部類的對(duì)象上忍,那么必須指明創(chuàng)建對(duì)象的類型:OuterClassName.InnerClassName
- 如果需要在內(nèi)部類中生成外部對(duì)象的引用骤肛,需要return OuterClassName.this;
- 外部類引用對(duì)象可以直接創(chuàng)建內(nèi)部類對(duì)象:outer.new Inner();
- 普通的內(nèi)部類對(duì)象隱式地保存了一個(gè)引用纳本,指向創(chuàng)建它的外部類對(duì)象,但是當(dāng)使用static關(guān)鍵字修飾內(nèi)部類時(shí)腋颠,這時(shí)內(nèi)部類一般稱為嵌套類繁成,這就意味著:創(chuàng)建內(nèi)部類對(duì)象不需要其外部類對(duì)象;不能從嵌套類的對(duì)象訪問非靜態(tài)的外部對(duì)象
- 內(nèi)部類仍然是一個(gè)獨(dú)立的類淑玫,在編譯之后內(nèi)部類會(huì)被編譯成獨(dú)立的.class文件巾腕,但是前面冠以外部類的類名和$符號(hào) 。
- 內(nèi)部類不能用普通的方式訪問絮蒿。
- 內(nèi)部類聲明成靜態(tài)的尊搬,就不能隨便的訪問外部類的成員變量了,此時(shí)內(nèi)部類只能訪問外部類的靜態(tài)成員變量 土涝。
- 外部類不能直接訪問內(nèi)部類的的成員佛寿,但可以通過內(nèi)部類對(duì)象來訪問