只要類被定義為(final)就是不能被繼承的
Extends繼承一個(gè)已有的類,被繼承的類稱為父類(超類,基類),新的類稱為子類(派生類)
1. public繼承 明顯父類public成員在子類中仍然是public,,所以子類對(duì)象可以調(diào)用父類的接口
2. protected繼承 protected繼承后,,父類public和protected成員都變成子類的protected成員了 也就是說子類對(duì)象無法調(diào)用父類的接口,只能將父類的函數(shù)當(dāng)作子類的內(nèi)部實(shí)現(xiàn)
3. private繼承 private繼承后,,父類public和protected成員都變成子類的private了,,它比protected繼承更嚴(yán)格。 也就說這些父類的成員只能被繼承一次,,再繼續(xù)繼承,,父類的成員就不可見了。
class A { int i; void f() {} void A() {} // 構(gòu)造 }
// B 繼承 A class 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)鍵字,,它是用來實(shí)現(xiàn)接口中定義的抽象方法
interface接口內(nèi)部全部是由全局常量和公共抽象方法所組成
對(duì)于class而言,,extends用于(單)繼承一個(gè)類(class),而implements用于實(shí)現(xiàn)一個(gè)接口(interface)
Implements,,實(shí)現(xiàn)父類,,子類不可以覆蓋父類的方法或者變量。
即使子類定義與父類相同的變量或者函數(shù),,也會(huì)被父類取代掉
interface定義一些方法,并沒有實(shí)現(xiàn),需要implements來實(shí)現(xiàn)才可用
extend可以繼承一個(gè)接口,但仍是一個(gè)接口,也需要implements之后才可用
這樣的好處是:架構(gòu)師定義好接口,,讓工程師實(shí)現(xiàn)就可以了。整個(gè)項(xiàng)目開發(fā)效率和開發(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();
|