|
只要類被定義為(final)就是不能被繼承的
Extends繼承一個(gè)已有的類,被繼承的類稱為父類(超類,基類),新的類稱為子類(派生類)
1. public繼承 明顯父類public成員在子類中仍然是public,所以子類對(duì)象可以調(diào)用父類的接口2. protected繼承 protected繼承后,父類public和protected成員都變成子類的protected成員了 也就是說(shuō)子類對(duì)象無(wú)法調(diào)用父類的接口,只能將父類的函數(shù)當(dāng)作子類的內(nèi)部實(shí)現(xiàn)3. private繼承 private繼承后,父類public和protected成員都變成子類的private了,它比protected繼承更嚴(yán)格。 也就說(shuō)這些父類的成員只能被繼承一次,再繼續(xù)繼承,父類的成員就不可見(jiàn)了。
class A { int i; void f() {} void A() {} // 構(gòu)造}// B 繼承 Aclass B extends A { int j; void f() {} // 重寫 void g() {} void B() { // 構(gòu)造 // 調(diào)用父類的構(gòu)造方法 super(); }}B b = new B();b.i // 繼承的b.f() // 重寫后的b.j // 自有的b.g() // 自有的
Implements 接口實(shí)現(xiàn)
Implements是一個(gè)類實(shí)現(xiàn)一個(gè)接口用的關(guān)鍵字,它是用來(lái)實(shí)現(xiàn)接口中定義的抽象方法
interface接口內(nèi)部全部是由全局常量和公共抽象方法所組成
對(duì)于class而言,extends用于(單)繼承一個(gè)類(class),而implements用于實(shí)現(xiàn)一個(gè)接口(interface)
Implements,實(shí)現(xiàn)父類,子類不可以覆蓋父類的方法或者變量。
即使子類定義與父類相同的變量或者函數(shù),也會(huì)被父類取代掉
interface定義一些方法,并沒(méi)有實(shí)現(xiàn),需要implements來(lái)實(shí)現(xiàn)才可用
extend可以繼承一個(gè)接口,但仍是一個(gè)接口,也需要implements之后才可用
這樣的好處是:架構(gòu)師定義好接口,讓工程師實(shí)現(xiàn)就可以了。整個(gè)項(xiàng)目開(kāi)發(fā)效率和開(kāi)發(fā)成本大大降低。
// 接口public interface People { public void say();}public interface People2 { public void say2();}// 等著被實(shí)現(xiàn)public class Chinese implements People, People2 { public void say() { System.out.println(" 你好!"); } public void say2() { System.out.println(" 你好!"); }}People chinese = new Chinese() ;chinese.say();chinese.say();
|