一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Java類和對象及實例

 風-2012 2011-04-21

原創(chuàng)  Java類和對象及實例 收藏

 

1,類和對象

 

在面向?qū)ο蟮母拍町斨?,類(class)是既包括數(shù)據(jù)又包括作用于數(shù)據(jù)的一組操作的封裝體。類的數(shù)據(jù)稱為成員變量,類對數(shù)據(jù)的操作稱為成員方法。成員變量反映類的狀態(tài)和特征,成員方法反映類的行為和能力。類的成員變量和方法統(tǒng)稱為類的成員。

 

對象(Object)是類的實例(instance)。對象是動態(tài)的,擁有生命周期,都會經(jīng)歷一個從創(chuàng)建、運行到消亡的過程。對象與類的關(guān)系就像變量與數(shù)據(jù)類型一樣。

 

類聲明

{ 修飾符 } class <Classname> { extends <Classname> }

                            { implements    <Interface1>,

                                         <Interface2>,

                     [..],

                     <InterfaceN> }

{

  // 類主體

}

 

聲明成員變量

public class Person{

    private int age;
}

 

(聲明)成員方法

[修飾符] 返回值類型 方法名([參數(shù)列表])[throws 異常類]

{

    語句序列;

    [return []]

}

 

public class class Person{

    private int age;

    public int getAge(){

         return age;

    }

   

    public void setAge(int a){

         age=a;

    }

}

 

聲明main方法

public static void main(String [] args)

 

對象聲明

Date aday;//聲明一個是Date類的aday對象

 

對象實例化

創(chuàng)建類的實例必須調(diào)用類的構(gòu)造方法。類的構(gòu)造方法是一類和類同名的方法,用于創(chuàng)建類的實例并初始化對象。

對象 = new 類的構(gòu)造方法([參數(shù)列表]);

aday = new Date();

當使用new創(chuàng)建了一個對象的時候,系統(tǒng)為對象中的成員變量進行了初始化,不但為變量分配了相應(yīng)的存儲單元,還為變量設(shè)置了所屬數(shù)據(jù)類型的初始值。

 

方法調(diào)用時的參數(shù)傳遞原則

如果形參的數(shù)據(jù)類型是基本數(shù)據(jù)類型,則實際參數(shù)向形參傳遞的是值,即傳值。

如果形參的數(shù)據(jù)類型是引用數(shù)據(jù)類型,則實際參數(shù)向形式參數(shù)傳遞的是引用。

這里隨便用個例子來說明

  1. public class Tester {    
  2.     public static void main(String[] args) {    
  3.         int primitive = 2;    
  4.         changePrimitive(primitive);    
  5.         //primitive的值依然是2    
  6.         MyClass myClass = new MyClass();    
  7.         changeObject(myClass);    
  8.         //myClass仍然指向的是執(zhí)行changeObject之前的那個對象 
  9.         //myClass.i等于3了    
  10.     }    
  11.   
  12.     public static void changePrimitive(int primitive) {    
  13.         primitive = 3;    
  14.     }    
  15.   
  16.     //在這里myClass1只是一個副本和myClass指向的是同一個對象,千萬不要被去參數(shù)名稱為myClass迷惑
  17.     //這里我有意區(qū)分
  18.     public static void changeObject(MyClass myClass1) {
  19.         //這個時候?qū)υ瓉淼膶ο蟮闹挡僮饔行В驗樗赶虻牡刂肪褪窃瓉淼膶ο?/span>
  20.         myClass1.i = 3;
  21.         //這里修改的只是副本指向的對象
  22.         //而原來的myClass依然指向原來的對象
  23.         myClass1 = new MyClass();    
  24.     }    
  25. }    
  26.   
  27. class MyClass {    
  28.     int i;    
  29. }   

2,繼承,多態(tài)和封裝

 

(1)封裝性

 

聲明構(gòu)造方法

構(gòu)造方法與類同名,構(gòu)造方法返回的是該類的一個實例,不需要返回類型。

當一個類沒有構(gòu)造方法的時候,Java自動為該類生成一個默認的構(gòu)造方法,默認構(gòu)造函數(shù)沒有參數(shù)。

public class Person{

     public Person(int age){

     }

    

     public Person(String name ,int age ){

     }

}

當一個類有了構(gòu)造函數(shù)但是不是默認構(gòu)造函數(shù)的時候,默認構(gòu)造函數(shù)將不會被提供。

也就是說:Person p=new Person();是錯誤的。

 

重載

一個類中如果有多個同名的但是帶有不同參數(shù)的方法列表,稱為方法的重載。

 

this引用和instanceof對象運算符

this可以調(diào)用成員變量和成員方法,也可以指代對象本省,也可以調(diào)用本類的構(gòu)造函數(shù)。

 

public class class Person{

    private int age;

    public int getAge(){

         return age;

    }

   

    public void setAge(int a){

         age=a;

    }

    public boolean equals(Person p1){

            Person p=this;

            return p1.getAge()==p.getAge();

    }

}

 

instanceof對象運算符判斷一個對象是否屬于指定類及其子類,返回boolean類型。

Person p=new Person();

return p instanceof Person;//返回true

 

類成員訪問權(quán)限

 

  private成員 默認成員 protected成員 public成員
同一類中可見
同一包中對子類可見
同一包中對非子類可見
不同包中對子類可見
不同包中對非子類可見

 

實例成員與類成員 (類成員方法和實例成員方法)

類成員使用類名訪問,聲明類成員需要加上static,如下所示

public class Person1{

    String name;

    static int count;

}

 

訪問方式為:假設(shè)一個對象p

Person1.count;

p.name;

 

 

繼承

 

Java中只支持單繼承,子類不能夠繼承父類的構(gòu)造方法。但在子類當中可以使用super調(diào)用父類的構(gòu)造方法。格式為super([參數(shù)列表])

子類可以對父類賦值兼容。

由于繼承相對而言比較簡單,所以不再贅述。 

 

多態(tài)性

 

多態(tài)性有兩種

a,編譯時多態(tài)。

b,運行時多態(tài)。

 

方法的多態(tài)性主要有方法的重載和覆蓋。

方法的覆蓋表現(xiàn)出兩種多態(tài)性,當對象獲得本類的實例時,為編譯時多態(tài)性,否則為運行時多態(tài)性。

Person p=new Person();

Student stu=new Student();//假設(shè)Student是Person的子類,它們有同樣的print()方法。

Person p1=new Student();

p.print();//編譯時多態(tài),執(zhí)行本類方法

stu.print();//編譯時多態(tài),執(zhí)行覆蓋方法

p1.print();//運行時多態(tài),執(zhí)行Student覆蓋方法

 

p1聲明為父類對象但是卻獲得了子類的實例,那么它究竟執(zhí)行的是子類覆蓋方法還是父類方法呢?

這里有兩種情況,這取決于子類是否覆蓋了父類的該方法。如果子類覆蓋了該方法,就執(zhí)行子類的該方法,否則執(zhí)行父類方法。但是在編譯時,僅僅依據(jù)對象所屬的類無法確定到底該執(zhí)行哪個類的方法,只有到運行是才能呢個確定,所以是運行時多態(tài)。

 

這里請注意,父類對象并不能沒有被子類覆蓋的方法。

 

 

3,類和接口及抽象類內(nèi)部類

 

//基本類

public class Manager extends Person implements Job{


}

 

//抽象類

public abastract class Person{

    String id;

    String name;

    int age;

    //對應(yīng)get和set方法

    public abstract String goodAt();
}

 

//接口

public interface Job{

//abstract可有可無

    public abastract  String getJobName();

    public int getSalary();
}

 

//最終類

public final class Math extends Object{

}

 

如上,使用關(guān)鍵字abstract聲明的類稱為抽象類,使用abstract聲明的成員方法為抽象方法,抽象類通常包含抽象方法,抽象方法是只有方法聲明而沒有方法體的成員方法。

抽象類不能被實例化。

抽象類中可以不包含抽象方法,但是包含抽象方法的類必須聲明為抽象類。抽象方法必須被子類覆蓋。

最終類不能被繼承。

 

接口

 

接口是一組常量和抽象方法的集合。在Java中接口是一種引用數(shù)據(jù)類型。接口的作用是提供方法聲明與方法實現(xiàn)分離的機制,使多個類之間表現(xiàn)出共同的行為能力。它有一下的特點。

 

1)接口及接口成員的訪問權(quán)限都是public。

2)接口中的成員方法都是公有的抽象的實例成員方法。

3)接口中所有的抽象方法必須被實現(xiàn)接口的類全部覆蓋。

4)接口中的成員變量都是常量。

5)接口不能被實例化。

6)接口是引用數(shù)據(jù)類型。

 

接口與抽象類

 

相同點:

兩者都包含抽象方法,都不能被實例化。

兩者都是引用數(shù)據(jù)類型,其變量可以被賦值為子類或者實現(xiàn)接口的類的對象。

 

不同點:

抽象類約定多個子類之間共同使用的方法;接口約定多個互不相關(guān)類之間共同使用的方法。

抽象類與子類之間采用單繼承機制;一個類實現(xiàn)了多個接口實現(xiàn)了多繼承的功能。

抽象類及其類中成員具有與普通類一樣的訪問權(quán)限;接口中的訪問權(quán)限都是public。

抽象類可以包含非抽象的方法,也可以聲明構(gòu)造方法;接口中的方法全部都是抽象方法。

抽象類可以聲明成員變量,子類可以對成員變量賦值;接口只能聲明常量。

 

內(nèi)部類

 

聲明內(nèi)部類
在一個類中包含另一個類的定義
內(nèi)部類可以在類、方法甚至語句塊中定義
內(nèi)部類可以是private或protected

 

這里呢,我對內(nèi)部類的理解不深入,所以需要重新整理了,到此為止吧,我將整理另外一篇有關(guān)內(nèi)部類的文章。

 

 

 

發(fā)表于 @ 2010年10月07日 20:40:00 | 評論( 0 ) | 編輯| 舉報| 收藏

舊一篇:面向?qū)ο笏枷爰昂诵?/a> | 新一篇:Jsp內(nèi)置對象

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产永久免费高清在线精品| 大香蕉久草网一区二区三区| 91亚洲精品综合久久| 亚洲国产中文字幕在线观看| 99久久精品午夜一区| 中文字幕亚洲精品乱码加勒比| 91久久国产福利自产拍| 国产白丝粉嫩av在线免费观看| 91插插插外国一区二区| 夫妻性生活一级黄色录像| 一区二区三区18禁看| 日韩毛片视频免费观看| 青青操精品视频在线观看| 日本午夜免费观看视频| 亚洲国产精品久久综合网| 成年女人午夜在线视频| 亚洲欧美日本成人在线| 日本中文字幕在线精品| 91亚洲国产—区=区a| 日本女优一区二区三区免费| 国产日本欧美特黄在线观看| 日韩精品一区二区毛片| 国产欧美日韩不卡在线视频| 玩弄人妻少妇一区二区桃花| 久久久精品日韩欧美丰满 | 国产原创中文av在线播放| 夜色福利久久精品福利| 又黄又色又爽又免费的视频| 亚洲深夜精品福利一区| 免费啪视频免费欧美亚洲| 久久热在线免费视频精品| 欧洲精品一区二区三区四区| 东京热一二三区在线免| 精品女同一区二区三区| 九九热视频经典在线观看| 91精品视频全国免费| 91老熟妇嗷嗷叫太91| 美女黄片大全在线观看| 精品al亚洲麻豆一区| 中文字幕乱子论一区二区三区| 超碰在线播放国产精品|