2011年12月4日

          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)編輯 收藏

          public class BubbleSort implements SortUtil.Sort{

               public void sort(int[] data) {

                  int temp;

                  for(int i=0;i<data.length;i++){

                      for(int j=data.length-1;j>i;j--){

                          if(data[j]<data[j-1]){

                              SortUtil.swap(data,j,j-1);

                          }

                      }

                  }

              }

          posted @ 2011-12-04 22:58 陳小東 閱讀(1124) | 評(píng)論 (0)編輯 收藏

          public class InsertSort implements SortUtil.Sort{

               public void sort(int[] data) {

                  int temp;

                  for(int i=1;i<data.length;i++){

                      for(int j=i;(j>0)&&(data[j]<data[j-1]);j--){

                          SortUtil.swap(data,j,j-1);

                      }

                  }       

              }

          }

          posted @ 2011-12-04 22:57 陳小東 閱讀(732) | 評(píng)論 (0)編輯 收藏


          posts - 34, comments - 38, trackbacks - 0, articles - 0

          Copyright © 陳小東

          主站蜘蛛池模板: 海安县| 三门县| 新津县| 长白| 岑巩县| 江都市| 章丘市| 灵寿县| 南开区| 康平县| 彭州市| 略阳县| 马龙县| 克拉玛依市| 镇平县| 青州市| 平阳县| 镶黄旗| 勃利县| 塘沽区| 革吉县| 诸城市| 突泉县| 桂东县| 卢龙县| 团风县| 抚松县| 元谋县| 云霄县| 清涧县| 永清县| 涪陵区| 沙湾县| 双辽市| 石首市| 纳雍县| 洪雅县| 平罗县| 专栏| 洛扎县| 高阳县|