Java是一個(gè)面向?qū)ο蟮恼Z(yǔ)言,java面向?qū)ο笠话阌腥筇卣鳎悍庋b、繼承、多態(tài)。
封裝:就是把一些屬性和方法封裝到一個(gè)類(lèi)里。
繼承:就如子類(lèi)繼承父類(lèi)的一些屬性和方法。
多態(tài):就如一個(gè)父類(lèi)有多個(gè)不同特色的子類(lèi)。
這里我就不多講解,下面我主要說(shuō)明一個(gè)繼承。繼承是OOP(面向?qū)ο螅┑囊粋€(gè)特色,java只支持單繼承(如果繼承兩個(gè)有同樣方法的父類(lèi),那么就不知道繼承到那個(gè)父類(lèi)的,所以java只支持單繼承)。繼承是java的一個(gè)特色,我們用的所以類(lèi)都繼承Objict類(lèi),所以就要Object類(lèi)的方法,如toString()、getClass()、wait()……所以我們建立的類(lèi)都有父類(lèi)。
Java中一般有三種類(lèi):
基本類(lèi):也就是一般的類(lèi)(一般所說(shuō)的類(lèi)就是基本類(lèi)),是對(duì)象的模板,是屬性和方法的集合。可以繼承其他基本類(lèi)、抽象類(lèi)、實(shí)現(xiàn)接口。
抽象類(lèi):有抽象方法的類(lèi)(抽象方法就是該方法必須由繼承來(lái)實(shí)現(xiàn),本身只定義,不實(shí)現(xiàn))。抽象類(lèi)可以有一個(gè)或多個(gè)抽象方法,他是基本類(lèi)和接口類(lèi)的過(guò)度。
接口類(lèi):一般叫做接口,該類(lèi)中的所有方法都是抽象方法,該類(lèi)的方法本身只定義不實(shí)現(xiàn)。
抽象類(lèi)和接口一個(gè)由【abstract class + 抽象類(lèi)名】一個(gè)由【interface +接口名】定義,接口中的所以方法都是抽象方法,而抽象類(lèi)有部分方法是自身實(shí)現(xiàn)了的,一些只定義不實(shí)現(xiàn)。
基本類(lèi)的定義:
public class Fruit {
public void price() {
System.out.println("水果價(jià)格");
}
public void weight() {
System.out.println("水果重量");
}
}
抽象類(lèi)的定義:
public abstract class Fruit {
public void price() {
System.out.println("水果價(jià)格");
}
public abstract void weight();
}
接口類(lèi)的定義:
public interface Fruit {
public void price();
public void weight() ;
}
從上面我們可以看出接口就是抽象類(lèi)的升級(jí)版,由于該類(lèi)的方法全是抽象方法,所以把a(bǔ)bstract換成interface。而接口的方法必須由子類(lèi)才能實(shí)現(xiàn)。
繼承
繼承基本類(lèi),可以繼承父類(lèi)的方法,也可以從些,也可以擴(kuò)充。下面是實(shí)現(xiàn)接口基本類(lèi)的類(lèi):
public class Apple extends Fruit {
}
該類(lèi)中就有Fruit基本類(lèi)中的兩個(gè)方法:price()和weight();
繼承抽象類(lèi),必須實(shí)現(xiàn)抽象類(lèi)的抽象方法,可以修改父類(lèi)的方法,和添加方法。下面是繼承抽象類(lèi)的類(lèi):
public class Apple extends Fruit {
@Override
public void weight() {
System.out.println("水果重量");
}
}
該類(lèi)繼承類(lèi)Fruit的price()方法,同時(shí)實(shí)現(xiàn)了Fruit抽象類(lèi)的weight()方法。
繼承接口類(lèi)(也就實(shí)現(xiàn)接口),必須實(shí)現(xiàn)接口類(lèi)的所有的抽象類(lèi)和添加了。下面是繼承接口的類(lèi):
public class Aple implements Fruit {
@Override
public void price() {
System.out.println("水果價(jià)格");
}
@Override
public void weight() {
System.out.println("水果重量");
}
}
該類(lèi)是實(shí)現(xiàn)Fruit接口的所以抽象方法。
Java只支持單繼承(繼承基本類(lèi)和抽象類(lèi)),但是我們可以用接口來(lái)實(shí)現(xiàn)(多繼承接口來(lái)實(shí)現(xiàn))
如:public class Apple extends Fruit implements Fruit1, Fruit2{}
一般我們繼承基本類(lèi)和抽象類(lèi)用extends關(guān)鍵字,實(shí)現(xiàn)接口類(lèi)的繼承用implements關(guān)鍵字。其實(shí)繼承是很簡(jiǎn)單的,可以就是沒(méi)有弄清這兩個(gè)關(guān)鍵字,當(dāng)我們弄清楚也就是比較簡(jiǎn)單的。
接口也可以繼承接口如:public interface Fruit1 extends Fruit {}這是接口中的多重繼承,同理抽象類(lèi)和基本類(lèi)也同理。如果我們把基本類(lèi)添加final修飾,也就定義該類(lèi)不被繼承,該類(lèi)不能作為父類(lèi)。同時(shí)基本類(lèi)的方法可以用public 、private、proptected來(lái)修飾方法,用final來(lái)阻止繼承該方法。
這里只是自己的理解,有些地方時(shí)用詞不當(dāng)?shù)模皇怯X(jué)得這樣用詞更好的理解,請(qǐng)大家諒解。有些地方由于不是這里的重點(diǎn),沒(méi)有講清楚,希望大家通過(guò)其他方式了解。
posted @ 2011-12-04 23:08 陳小東 閱讀(1076) | 評(píng)論 (0) | 編輯 收藏