麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

類和對象

2019-11-06 09:34:26
字體:
供稿:網(wǎng)友

類和對象

一、 定義

對象:具有一組屬性和方法的實體。萬事萬物皆對象。

類:具有相同屬性和方法的對象的集合。抽象的概念。

關(guān)系:類是對象的抽象,對象是類的具體存在。

二、 類

1. 定義類

訪問修飾符   class   類名{

//定義屬性

//定義方法

}

 

public  class  Student{

String name;

int age;

public  void  study(){

}

public  void  eat(String food){

}

}

2. 創(chuàng)建對象

語法:類名  對象名  =  new  類名();

示例:Student  stu  =  new  Student();

通過對象名+.的方式可以調(diào)用類的成員(屬性、方法)。

stu.name = “zhangsan”;   

stu.study();

3. java中的數(shù)據(jù)類型

u 基本數(shù)據(jù)類型(值類型)

1) 整型:byte、short、int、long

2) 浮點型:float、double

3) 字符型:char

4) 布爾型:boolean

u 引用數(shù)據(jù)類型:

1) String

2) 數(shù)組

3) 類

三、 方法

1. 定義方法

語法:訪問修飾符   返回值類型   方法名稱(數(shù)據(jù)類型  參數(shù)名,  數(shù)據(jù)類型  參數(shù)名){

          //方法體

}

注意:

u 如果方法沒有任何返回值,那么返回值類型寫void。

u 如果方法有返回值,那么應(yīng)該使用return關(guān)鍵字將結(jié)果值返回。

u 方法的參數(shù)列表可以為空。

u 定義方法時,參數(shù)列表中的參數(shù)為形參(形式參數(shù))。

u 方法體中不能再定義其他方法。

2. 方法的調(diào)用

語法:通過對象名.方法名進(jìn)行方法的調(diào)用。

注意:

u 方法如果有參數(shù),那么必須傳遞參數(shù)(參數(shù)的類型、個數(shù))。

u 參數(shù)如果為值類型,方法調(diào)用前后,實參的值不變;參數(shù)如果為引用類型,方法調(diào)用前后,實參的值要改變。

u 如果方法定義時,沒有返回值,那么不能定義變量接受方法的返回值。

u 如果方法定義時,有返回值,那么可以定義變量接收返回值;也可以不定義變量接受。

u 同一類中相互調(diào)用方法時,直接通過方法名調(diào)用。

public  class  Teacher{

public  void  teach(){

    study();

}

public void study(){

}

}

 

u 不同類中調(diào)用方法時,需要首先創(chuàng)建類對象,通過對象名.方法名()進(jìn)行調(diào)用。

public  class  Teacher{

public void teach(){

}

}

public  class  Student(){

public  void  learn(){

    //調(diào)用Teacher類中的teach方法

    Teacher  teacher = new  Teacher();

    teacher.teach();

}

}

u 方法調(diào)用時,不需要寫{}

Teacher  teacher  =  new  Teacher();

teacher.teach(){};//錯誤

teacher.teach();//正確

3. 構(gòu)造方法

u 構(gòu)造方法的方法名和類名相同。

u 如果沒有顯示定義構(gòu)造方法,那么系統(tǒng)會默認(rèn)創(chuàng)建一個無參的構(gòu)造方法。

u 如果顯示定義了構(gòu)造方法,那么系統(tǒng)將不會再創(chuàng)建任何構(gòu)造方法。

u 構(gòu)造方法沒有返回值類型。

u 一個類中可以存在多個構(gòu)造方法。

u 創(chuàng)建類對象時,關(guān)鍵字new后面跟的就是類的構(gòu)造方法。

4. 方法的重載

1. 重載需要滿足以下條件:

在同一個類中

方法名相同

參數(shù)列表不同(參數(shù)個數(shù)不同、參數(shù)類型不同、參數(shù)順序不同)

2. 注意:方法的訪問修飾符和返回值類型不在考慮范圍之內(nèi)。

四、 局部變量和成員變量

成員變量:類中定義的屬性或字段就是成變量。

局部變量:方法中定義的變量、代碼塊中定義的變量({})都是局部變量。

成員變量可以通過this進(jìn)行訪問;局部變量不可以。

成員變量的優(yōu)先級 <局部變量的優(yōu)先級

成員變量,在類的所有方法中均可以使用;但是局部變量只能在相應(yīng)的代碼塊中使用。

五、 類成員的訪問修飾符

                       同一個類中             同一個包中           子類中          任何地方           

    PRivate              yes                     no                  no              no

    默認(rèn)修飾符            yes                     yes                 no              no

    protected            yes                     yes                 yes             no

public               yes                     yes                 yes             yes

 

    注意:優(yōu)先級從低到高依次為:private(私有)< 默認(rèn)< protected(受保護(hù))< public(公共)

    上述訪問修飾符適用于:屬性、方法。不適用于類,類的訪問修飾符只有2個:public和默認(rèn)修飾符。

六、 JAVA中的命名規(guī)則

1. 駝峰命名法

標(biāo)識符中,第一個英文單詞首字母小寫,其他單詞首字母均大寫。

2. 帕斯卡命名法

標(biāo)識符中,所有英文單詞首字母均大寫。

3. JAVA中的命名規(guī)則

包:全小寫。

類:帕斯卡命名法。

屬性|方法:駝峰命名法。

七、 靜態(tài)成員

1. 定義

被static關(guān)鍵字修飾的成員就是靜態(tài)成員,靜態(tài)成員包括:靜態(tài)屬性、靜態(tài)方法、靜態(tài)代碼塊。

public  class  MathHelper{

//定義靜態(tài)成員

public static final double PI = 3.14;

//靜態(tài)代碼塊

static{

    //代碼

}

//靜態(tài)方法

public  static  double  calculateCircleArea(double  r){

    return PI * r * r;

}

}

2. 注意事項

u 靜態(tài)成員需要通過類名進(jìn)行調(diào)用:double area = MathHelper.calculateCircleArea(5.0)。

u 靜態(tài)代碼塊只執(zhí)行一次,并且在系統(tǒng)啟動時執(zhí)行。

u 靜態(tài)成員雖然使用方便(不需要事先實例化),但是靜態(tài)成員在內(nèi)存中會一直存在。

八、 包

1. 設(shè)置類所在的包:在源文件的第一行添加:  package包名

      package com.bdqnsjz.demo;

      public class Test{}

2. 導(dǎo)入包:在源文件的package和類名中間添加:  import包名

      package com.bdqnsjz.demo;

      import com.dbqnsjz.homework;

      public class Test{}

3. 注意:

u 包名由小寫字母組成,不能以圓點開頭或結(jié)尾

u 包名之前最好加上唯一的前綴,通常使用組織倒置的網(wǎng)絡(luò)域名

u 常見的包:

java.lang:虛擬機(jī)自動引入

java.util:提供一些實用類

java.io:   輸入、輸出

u package和import的順序是固定的:

1.package必須位于第一行(忽略注釋行)

2.只允許有一個package語句

3.其次是import

4.接著是類的聲明

九、 封裝

1. 定義

將類的某些信息隱藏在類內(nèi)部,不允許外部程序直接訪問,而是通過該類提供的方法來實現(xiàn)對隱藏信息的操作和訪問。

public  class  Student{

private  String  name;

private  int  age;

 

public  String  getName(){

    return this.name;

}

public  void  setName(String  name){

    this.name  =  name;

}

}

2. 通俗的講,封裝就是將類的屬性(字段)設(shè)置為私有的(private),并添加getter/setter方法操作屬性。

十、 繼承

1. 目的

解決代碼冗余的問題。

2. 語法:

          public class 子類名 extends 父類名{

          }

3. 注意:

1.子類(擴(kuò)展類)、父類(基類)

      2.一個類只有有1個父類

      3.在父類中被protected修飾符修飾的變量,可以在子類中訪問。

        在父類中被private修飾符修飾的變量,不可以在子類中訪問。

      4.在子類中通過super關(guān)鍵字來訪問父類的成員。

        在當(dāng)前類中通過this關(guān)鍵字來訪問本類的成員。

      5.實例化子類對象時,會默認(rèn)調(diào)用父類無參的構(gòu)造方法。

      6.在子類中調(diào)用父類構(gòu)造方法時,應(yīng)該在子類的構(gòu)造方法的第一行進(jìn)行調(diào)用。

4. 方法的重寫

定義:子類重新實現(xiàn)父類的方法。

要求:方法名相同;參數(shù)列表相同;返回值類型相同;子類方法訪問修飾符高于父類方法的修飾符。

    注解:@Override  重寫

5. 方法重載和方法重寫的區(qū)別

    1.方法重寫研究的是子類和父類,方法的重載研究的是同一個類中的方法

    2.方法重寫的方法名要相同,方法重載時方法名也相同

    3.方法重寫時,參數(shù)列表相同,方法重載時,參數(shù)列表不同。

    4.方法重寫時,返回值相同,方法重載時,返回值類型無關(guān)。

6. Object類

    1.Object是所有類的父類(所有類都直接或間接繼承自O(shè)bject類)

    2.判斷值類型的變量是否相等用==   判斷引用類型的變量是否相等用equals

    3.hashCode哈希值。每次通過構(gòu)造方法創(chuàng)建類的對象后,都有1個唯一的哈希值。

7. instanceof關(guān)鍵字

    用途:instanceof用于判斷一個引用類型所引用的對象是否是一個類的實例。

向上轉(zhuǎn)型:子類對象轉(zhuǎn)父類對象       

Pet pet1 = new Dog();      Pet pet2 = new Penguin();

向下轉(zhuǎn)型:父類對象轉(zhuǎn)子類對象       

Dog dog = (Dog)pet1;       Penguin penguin = (Penguin)pet1;//null

注意:向上轉(zhuǎn)型安全,向下轉(zhuǎn)型有風(fēng)險,可能會存在類型不兼容的問題。

解決辦法就是使用instanceof關(guān)鍵字判斷是否類型兼容。

十一、 多態(tài)

1. 定義:

同一個引用類型,使用不同的實例而執(zhí)行不同操作。

2. 具體實現(xiàn)步驟:

1.定義父類和子類,在子類中重寫父類的方法;

2.定義一個方法,方法的參數(shù)為父類型,在方法中調(diào)用父類被重寫的方法;

3.調(diào)用該方法時,傳遞子類對象,結(jié)果執(zhí)行的為子類的方法,而非父類的方法。

3. 注意:

多態(tài)中涉及到的類應(yīng)該存在繼承關(guān)系。

里氏代換原則(凡是出現(xiàn)父類的地方,都可以使用子類對象)

public void takeCare(Pet pet){

pet.cure();

}

Pet dog = new Dog();

Pet penguin = new Penguin();

doctor.takeCare(dog);

doctor.takeCare(penguin);

 

十二、 抽象類

抽象方法:被abstract關(guān)鍵字修飾的方法就是抽象方法。

抽象類:被abstract關(guān)鍵字修飾的類就是抽象類。

注意:

1. 抽象方法不能有方法體。    

public abstract void run();

2. 抽象方法所在的類一定是抽象類。    

public abstract class Traffic{}

3. 抽象類中的方法不一定都是抽象方法。

4. 抽象類無法直接實例化創(chuàng)建對象,必須調(diào)用子類的構(gòu)造方法創(chuàng)建對象。

十三、 接口

1. 定義:

接口用于提供一種約定(方法),使得實現(xiàn)接口的類在形式上保持一致。

2. 語法:

public interface 接口名{

//抽象方法

}

public class 類名 implements 接口名{

        //實現(xiàn)接口中所有的抽象方法

}

3. 注意:

1.接口中只能包含抽象方法(不需要使用abstract關(guān)鍵字修飾)

2.一個類可以實現(xiàn)多個接口(只能繼承1個類)

3.接口不能直接被實例化(由實現(xiàn)類去實例化接口)。

4.一個接口可以繼承多個接口

5.一個類可以實現(xiàn)多個接口

6.接口中的所有方法都為抽象方法

7.抽象類實現(xiàn)接口后,可以不實現(xiàn)接口中的抽象方法

十四、 異常

1. 定義

異常是指在程序運行過程中所發(fā)生的不正常的事件,它會中斷正在運行的程序。

2. 異常相關(guān)的關(guān)鍵字

    try、catch、finally、throw、throws

u try:執(zhí)行可能產(chǎn)生異常的代碼

u catch:捕獲異常,編寫處理異常的代碼

u finally:無論是否發(fā)生異常,都要執(zhí)行的代碼塊

u throw:手動拋出異常

u throws:聲明方法可能要拋出的各種異常

3. 注意

u try代碼塊有可能出現(xiàn)異常也可能不會出現(xiàn)異常

u 只有try代碼塊出現(xiàn)異常時,catch代碼塊才會執(zhí)行

u try中的代碼塊一旦出現(xiàn)異常,那么出現(xiàn)異常后面的代碼不會繼續(xù)執(zhí)行。

u ex.printStackTrace()方法用于向控制臺打印輸出異常堆棧信息(在執(zhí)行哪一行代碼時出現(xiàn)什么異常)

u 如果出現(xiàn)的異常類型和catch塊中異常的類型匹配,那么才會執(zhí)行catch塊中的代碼,否則不執(zhí)行。

u 所有異常類均直接或間接繼承自類Exception

u 多重catch  在try代碼塊后,包含了多個catch代碼塊

u 多重catch時,Exception一定要放在最后

u System.exit(1);表示強(qiáng)制性退出系統(tǒng)。

u try-catch-finally結(jié)構(gòu)中try語句塊是必須的,catch、finally語句塊均可選,但兩者至少出現(xiàn)之一

u try-catch塊中存在return語句,是否還執(zhí)行finally塊,如果執(zhí)行,說出執(zhí)行順序

4. 常見的異常

1.ArrayIndexOutOfBoundsException   數(shù)組下標(biāo)越界異常

2.NullPointerException              空指針異常

3.NumberFormatException             數(shù)字格式化異常

4.ArithmeticException               算術(shù)運算異常

5.RuntimeException                  運行時異常

6.FileNotFoundException            文件未找到異常

7.IOException                       輸入輸出異常

8.NoSuchMethodException            方法未找到異常

9.Exception                         所有異常的父類

10.ClassCastException              類型強(qiáng)制轉(zhuǎn)換異常


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美特一级 | 久久国产免费视频 | 亚洲午夜1000理论片aa | 日韩精品一二三区 | 欧美视屏一区二区 | 99国产精成人午夜视频一区二区 | 精品久久久久久久久久中文字幕 | 欧美成人区 | 欧美成人精品欧美一级乱黄 | 成年免费大片黄在线观看岛国 | 午夜天堂在线视频 | 久久毛片 | 毛片a级毛片免费播放100 | 在线免费观看毛片 | 成熟女人特级毛片www免费 | 亚洲福利在线视频 | 免费毛片视频 | 国产精选电影免费在线观看 | 一级成人欧美一区在线观看 | 亚洲午夜免费电影 | 午夜视频久久久 | 99影视在线视频免费观看 | 亚洲精品成人18久久久久 | 欧美××××黑人××性爽 | 久色免费 | 射逼网站| 亚州视频在线 | 欧美视频99 | 久久久国产视频 | 亚洲成人入口 | 欧美性久久久 | 日本黄色不卡视频 | 在线 日本 制服 中文 欧美 | 免费一级毛片免费播放 | 国产一级毛片国产 | 亚洲国产精品久久久久久久 | 成年人黄色免费网站 | 免费黄色在线 | 免费a级毛片大学生免费观看 | 久久96国产精品久久久 | 九九精品视频免费 |