最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java 全方位講解面向?qū)ο筇攸c(diǎn)與使用

 更新時(shí)間:2022年04月14日 16:53:10   作者:Tangable22  
面向?qū)ο箝_(kāi)發(fā)方法將面向?qū)ο蟮乃枷霊?yīng)用于軟件開(kāi)發(fā)過(guò)程中,指導(dǎo)開(kāi)發(fā)活動(dòng),是建立在“對(duì)象”概念基礎(chǔ)上的方法學(xué),簡(jiǎn)稱OO( Object-Oriented)方法

面向過(guò)程和面向?qū)ο蟮膮^(qū)別

面向過(guò)程:當(dāng)事件比較簡(jiǎn)單的時(shí)候,利用面向過(guò)程,注重的是事件的具體步驟和過(guò)程,注重的是過(guò)程中的具體行為,以函數(shù)為最小單位,考慮怎么做。

面向?qū)ο螅鹤⒅卣?ldquo;參與者”,將功能封裝進(jìn)對(duì)象中,強(qiáng)調(diào)具備了功能的對(duì)象,以類/對(duì)象為最小單位,考慮誰(shuí)來(lái)做。

案例:小明從冰箱里拿東西

面向過(guò)程:

在這里插入圖片描述

面向?qū)ο?

在這里插入圖片描述

面向過(guò)程 —> 面向?qū)ο?, 其實(shí)就是由執(zhí)行者 —> 指揮者的 一個(gè)過(guò)渡

類和對(duì)象的關(guān)系

萬(wàn)物皆對(duì)象

對(duì)象:具體的事物,具體的實(shí)體,具體的實(shí)例,模板下具體的產(chǎn)品

類:對(duì)對(duì)象向上抽取出像的部分,公布部分,形成類,類是抽象的,是一個(gè)模板,一般在寫(xiě)代碼的時(shí)候先寫(xiě)類,然后再根據(jù)類創(chuàng)建對(duì)應(yīng)的對(duì)象

類是對(duì)象的抽象,對(duì)象是類的實(shí)例化

在這里插入圖片描述

類和對(duì)象的創(chuàng)建

類的創(chuàng)建

1.屬性(field 成員變量)

屬性用于定義該類或該類對(duì)象包含的數(shù)據(jù)或者說(shuō)靜態(tài)特征。屬性作用范圍是整個(gè)類體。

屬性定義格式:

[修飾符] 屬性類型 屬性名 = [默認(rèn)值];

2.方法

方法用于定義該類或該類實(shí)例的行為特征和功能實(shí)現(xiàn)。方法是類和對(duì)象行為特征的抽象。方法很類似于面向過(guò)程中的函數(shù)。面向過(guò)程中,函數(shù)是最基本單位,整個(gè)程序由一個(gè)個(gè)函數(shù)調(diào)用組成。面向?qū)ο笾?,整個(gè)程序的基本單位是類,方法是從屬于類和對(duì)象的。

方法定義格式:

[修飾符] 方法返回類型 方法名(形參列表){

? //Java語(yǔ)句

}

我們以上面王者榮耀英雄類創(chuàng)建為例:

//創(chuàng)建英雄類
public class Hero {
    //屬性
    String Name;//英雄姓名
    int Survive;//生存能力
    int Attack;//攻擊傷害
    int Skill;//技能效果
    int Difficulty;//上手難度

    //技能
    public void Kill(int number){
        //根據(jù)輸入的數(shù)字釋放幾技能
        System.out.println(Name+"釋放"+number+"技能?。。?);
    }
    //輸出該英雄的屬性
    public void print(){
        System.out.println("英雄:"+Name);
        System.out.println("生存能力:"+Survive);
        System.out.println("攻擊傷害:"+Attack);
        System.out.println("技能效果:"+Skill);
        System.out.println("上手難度:"+Difficulty);
    }

}

對(duì)象的創(chuàng)建

接下來(lái)我們對(duì)我們創(chuàng)建好的類來(lái)創(chuàng)建對(duì)象

public class TestCode01 {
    //main方法,程序的入口
    public static void main(String[] args) {
        //創(chuàng)建一個(gè)對(duì)象(英雄)-->馬克波羅
        Hero make = new Hero();
        make.Name = "馬克波羅";
        make.Survive = 4;
        make.Attack = 6;
        make.Skill = 6;
        make.Difficulty = 5;
        //再創(chuàng)建一個(gè)英雄-->瀾
        Hero lan = new Hero();
        lan.Name = "瀾";
        lan.Survive = 3;
        lan.Attack = 5;
        lan.Skill = 4;
        lan.Difficulty = 6;
        lan.Kill(1);
        //輸出兩個(gè)英雄的屬性
        make.print();
        System.out.println("-------------");
        lan.print();
        //釋放技能
        make.Kill(3);
        System.out.println("-------------");
        lan.Kill(2);
    }
}

結(jié)果: 每個(gè)英雄都有相同的屬性,每個(gè)屬性又有不同的值,通過(guò)類我們可以創(chuàng)建很多個(gè)對(duì)象,每個(gè)對(duì)象又有不同的屬性值。

比如:王者里的一百多個(gè)英雄,每個(gè)都有不同的特點(diǎn)。

在這里插入圖片描述

創(chuàng)建對(duì)象的過(guò)程:

(1)在第一次遇到一個(gè)類的時(shí)候,對(duì)這個(gè)類要進(jìn)行加載,只加載一次。

(2)創(chuàng)建對(duì)象,在堆中開(kāi)辟空間

(3)對(duì)對(duì)象進(jìn)行初始化操作,屬性賦值都是默認(rèn)的初始值。

(4)new關(guān)鍵字調(diào)用構(gòu)造器,執(zhí)行構(gòu)造方法,在構(gòu)造器中對(duì)屬性重新進(jìn)行賦值

構(gòu)造器

對(duì)象都是new出來(lái)的,new關(guān)鍵字實(shí)際上在調(diào)用一個(gè)方法,這個(gè)方法叫做構(gòu)造方法(構(gòu)造器)

調(diào)用構(gòu)造器的時(shí)候,如果你的類中沒(méi)有寫(xiě)構(gòu)造器,那么系統(tǒng)會(huì)默認(rèn)給你分配一個(gè)構(gòu)造器(空構(gòu)造器)

構(gòu)造方法格式:

[修飾符] 構(gòu)造器名字(){

}

構(gòu)造器和方法的區(qū)別:

  • 沒(méi)有方法的返回值
  • 方法體內(nèi)部不能有return語(yǔ)句
  • 構(gòu)造器的名字很特殊,必須跟類名一致

構(gòu)造器的作用:不是為了創(chuàng)建對(duì)象,因?yàn)樵谡{(diào)用構(gòu)造器之前,這個(gè)對(duì)象就已經(jīng)創(chuàng)建好了,并且屬性有默認(rèn)的初始化的值。

調(diào)用構(gòu)造器的目的是給屬性進(jìn)行賦值操作的。

注意:我們一般不會(huì)在空構(gòu)造器中進(jìn)行初始化操作,因?yàn)槟菢拥脑捗總€(gè)對(duì)象的屬性就一樣了。

下面例子:

class Hero{
    //屬性
    String Name;//英雄姓名
    int Survive;//生存能力
    int Attack;//攻擊傷害
    int Skill;//技能效果
    int Difficulty;//上手難度

    public Hero(){
        Survive=4;
        Attack=5;
        Skill=6;
        Difficulty=7;
    }
    public void print(){
        System.out.println("英雄:"+Name);
        System.out.println("生存能力:"+Survive);
        System.out.println("攻擊傷害:"+Attack);
        System.out.println("技能效果:"+Skill);
        System.out.println("上手難度:"+Difficulty);
    }
}
public class TestCode01 {
    public static void main(String[] args) {
        //創(chuàng)建兩個(gè)英雄對(duì)象
        Hero make = new Hero();
        make.Name="馬克";
        Hero lan=new Hero();
        lan.Name="瀾";
        //輸出兩個(gè)屬性
        make.print();
        lan.print();
    }
}

因?yàn)槲覀冊(cè)跇?gòu)造器里面賦值了,所以我們創(chuàng)建對(duì)象的時(shí)候?qū)傩跃鸵粯恿?/p>

在這里插入圖片描述

實(shí)際上,我們只要保證空構(gòu)造器的存在就可以了,里面的東西不用寫(xiě),我們要用構(gòu)造器賦值就要對(duì)構(gòu)造器重載

構(gòu)造器重載

一般保證空構(gòu)造器的存在,空構(gòu)造器中一般不會(huì)進(jìn)行屬性的賦值操作

在這里插入圖片描述

一般我們會(huì)重載構(gòu)造器,在重載的構(gòu)造器中進(jìn)行屬性賦值操作

在這里插入圖片描述

在重載構(gòu)造器以后,假如空構(gòu)造器忘寫(xiě)了,系統(tǒng)也不會(huì)給你分配默認(rèn)的空構(gòu)造器了,那么你要調(diào)用的話就會(huì)出錯(cuò)了。所以我們重載構(gòu)造器時(shí),一般要保留默認(rèn)構(gòu)造器

在這里插入圖片描述

當(dāng)形參名字和屬性名字重名的時(shí)候,會(huì)出現(xiàn)就近原則:在要表示對(duì)象的屬性前加上this.來(lái)修飾 ,因?yàn)閠his代表的就是你創(chuàng)建的那個(gè)對(duì)象

在這里插入圖片描述

this的使用

this就是指當(dāng)前的對(duì)象

this可以修飾屬性

當(dāng)屬性名字和形參發(fā)生重名的時(shí)候,或者 屬性名字 和局部變量重名的時(shí)候,都會(huì)發(fā)生就近原則,所以如果我要是直接使用變量名字的話就指的是離的近的那個(gè)形參或者局部變量,這時(shí)候如果我想要表示屬性的話,在前面要加上:this.修飾(如果不發(fā)生重名問(wèn)題的話,實(shí)際上你要是訪問(wèn)屬性也可以省略this.)

在這里插入圖片描述

this修飾方法

在同一個(gè)類中,方法可以互相調(diào)用,this.可以省略不寫(xiě)。

在這里插入圖片描述

this可以修飾構(gòu)造器

同一個(gè)類中的構(gòu)造器可以相互用this調(diào)用,注意:this修飾構(gòu)造器必須放在第一行

在這里插入圖片描述

static修飾

static可以修飾:屬性、方法、代碼塊、內(nèi)部類

static修飾屬性

在類加載的時(shí)候,會(huì)將靜態(tài)內(nèi)容也加載到方法區(qū)的靜態(tài)域中,靜態(tài)的內(nèi)容先于對(duì)象存在,并且這個(gè)靜態(tài)內(nèi)容被所有該類的對(duì)象共享。

  • 在類加載的時(shí)候一起加載入方法區(qū)中的靜態(tài)域中
  • 先于對(duì)象存在
  • 訪問(wèn)方式: 對(duì)象名.屬性名 類名.屬性名(推薦)

在這里插入圖片描述

static修飾屬性的應(yīng)用場(chǎng)景:某些特定的數(shù)據(jù)想要在內(nèi)存中共享,只有一塊 -->這個(gè)情況下,就可以用static修飾的屬性。

static修飾方法:

  • static和public都是修飾符,并列的沒(méi)有先后順序,先寫(xiě)誰(shuí)后寫(xiě)誰(shuí)都行
  • 在靜態(tài)方法中不能使用this關(guān)鍵字
  • 在靜態(tài)方法中不能訪問(wèn)非靜態(tài)的方法
  • 在靜態(tài)方法中不能訪問(wèn)非靜態(tài)的屬性
  • 靜態(tài)的方法可以用 對(duì)象名.方法名去調(diào)用 也可以 用 類名.方法名 (推薦)
  • 在同一個(gè)類中可以直接調(diào)用靜態(tài)方法

在這里插入圖片描述

代碼塊

代碼塊的分類: 普通塊、構(gòu)造塊、靜態(tài)塊、同步塊(多線程)

代碼塊執(zhí)行順序: 最先執(zhí)行靜態(tài)塊–>再執(zhí)行構(gòu)造塊,(不常用)–>再執(zhí)行構(gòu)造器–>再執(zhí)行方法中的普通塊

public class Test {
    //屬性
    int a;
    static int sa;
    //方法
    public void a(){
        System.out.println("-----a");
        {
            //普通塊限制了局部變量的作用范圍
            System.out.println("這是普通塊");
            System.out.println("----000000");
            int num = 10;
            System.out.println(num);
        }

    }
    public static void b(){
        System.out.println("------b");
    }
    //構(gòu)造塊
    {
        System.out.println("------這是構(gòu)造塊");
    }
    //靜態(tài)塊
    static{
        System.out.println("-----這是靜態(tài)塊");
        //在靜態(tài)塊中只能方法:靜態(tài)屬性,靜態(tài)方法
        System.out.println(sa);
        b();
    }
    //構(gòu)造器
    public Test(){
        System.out.println("這是空構(gòu)造器");
    }
    public Test(int a){
        this.a = a;
    }
    //這是一個(gè)main方法,是程序的入口:
    public static void main(String[] args) {
        Test t = new Test();
        t.a();
        Test t2 = new Test();
        t2.a();
    }
}

包(import)

包的作用: 為了解決重名的作用,解決權(quán)限問(wèn)題

包名的定義:

  • 名字全部小寫(xiě)
  • 中間用.隔開(kāi)
  • 一般都是公司域名倒著寫(xiě):com.jd 、com.taobao
  • 加上模塊名字 :com.taobao.login
  • 不能使用系統(tǒng)中的關(guān)鍵字:null
  • 包聲明的位置一般都在非注釋代碼的第一行

在這里插入圖片描述

導(dǎo)包:

(1)使用不同包下的類要需要導(dǎo)包, 例如:import java.util.Date;

(2)在導(dǎo)包以后,還想用其他包下同名的類,就必須要手動(dòng)自己寫(xiě)所在的包。

(3)同一個(gè)包下的類想使用不需要導(dǎo)包,可以直接使用。

(4)在java.lang包下的類,可以直接使用無(wú)需導(dǎo)包

(5)可以直接導(dǎo)入*

靜態(tài)導(dǎo)入:

//靜態(tài)導(dǎo)入:
import static java.lang.Math.*;
//導(dǎo)入:java.lang下的Math類中的所有靜態(tài)的內(nèi)容

public class Test {
    //這是一個(gè)main方法,是程序的入口:
    public static void main(String[] args) {
        System.out.println(random());
        System.out.println(PI);
        System.out.println(round(5.6));
    }
    //在靜態(tài)導(dǎo)入后,同一個(gè)類中有相同的方法的時(shí)候,會(huì)優(yōu)先走自己定義的方法。
    public static int round(double a){
        return 1000;
    }
}

到此這篇關(guān)于Java 全方位講解面向?qū)ο筇攸c(diǎn)與使用的文章就介紹到這了,更多相關(guān)Java 面向?qū)ο髢?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解析Spring Mvc Long類型精度丟失問(wèn)題

    解析Spring Mvc Long類型精度丟失問(wèn)題

    在平時(shí)開(kāi)發(fā)過(guò)程中,經(jīng)常會(huì)使用long類型作為id的類型,但是在使用過(guò)程中會(huì)導(dǎo)致long類型數(shù)據(jù)轉(zhuǎn)換為number類型時(shí)的后兩位變?yōu)?,今天小編給大家分享Spring Mvc Long類型精度丟失問(wèn)題,需要的朋友參考下吧
    2021-06-06
  • 簡(jiǎn)單講解奇偶排序算法及在Java數(shù)組中的實(shí)現(xiàn)

    簡(jiǎn)單講解奇偶排序算法及在Java數(shù)組中的實(shí)現(xiàn)

    這篇文章主要介紹了奇偶排序算法及Java數(shù)組的實(shí)現(xiàn),奇偶排序的時(shí)間復(fù)雜度為O(N^2),需要的朋友可以參考下
    2016-04-04
  • 5分鐘快速搭建SpringBoot3?+?MyBatis-Plus工程/項(xiàng)目的實(shí)現(xiàn)示例

    5分鐘快速搭建SpringBoot3?+?MyBatis-Plus工程/項(xiàng)目的實(shí)現(xiàn)示例

    本文主要介紹了使用IntelliJ?IDEA創(chuàng)建Spring?Boot工程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • Java實(shí)體類中Set按照對(duì)象的某個(gè)字段對(duì)set排序

    Java實(shí)體類中Set按照對(duì)象的某個(gè)字段對(duì)set排序

    這篇文章主要介紹了Java實(shí)體類中Set按照對(duì)象的某個(gè)字段對(duì)set排序,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-06-06
  • java隨機(jī)生成一個(gè)名字和對(duì)應(yīng)拼音的方法

    java隨機(jī)生成一個(gè)名字和對(duì)應(yīng)拼音的方法

    這篇文章主要介紹了java隨機(jī)生成一個(gè)名字和對(duì)應(yīng)拼音的方法,涉及java針對(duì)數(shù)組及隨機(jī)數(shù)操作的相關(guān)技巧,需要的朋友可以參考下
    2015-07-07
  • java在運(yùn)行時(shí)能修改工作目錄嗎

    java在運(yùn)行時(shí)能修改工作目錄嗎

    這篇文章主要給大家介紹了關(guān)于java在運(yùn)行時(shí)能修改工作目錄的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Zookeeper事務(wù)日志預(yù)分配空間解讀

    Zookeeper事務(wù)日志預(yù)分配空間解讀

    這篇文章主要介紹了Zookeeper事務(wù)日志預(yù)分配空間解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Java?file.delete刪除文件失敗,Windows磁盤出現(xiàn)無(wú)法訪問(wèn)的文件問(wèn)題

    Java?file.delete刪除文件失敗,Windows磁盤出現(xiàn)無(wú)法訪問(wèn)的文件問(wèn)題

    這篇文章主要介紹了Java?file.delete刪除文件失敗,Windows磁盤出現(xiàn)無(wú)法訪問(wèn)的文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • java split()使用方法解析

    java split()使用方法解析

    這篇文章主要介紹了java split()使用方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • java的JsonObject對(duì)象提取值方法

    java的JsonObject對(duì)象提取值方法

    下面小編就為大家分享一篇java的JsonObject對(duì)象提取值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03

最新評(píng)論

扶沟县| 武川县| 开江县| 盘锦市| 民丰县| 玉林市| 永仁县| 临汾市| 永靖县| 株洲市| 镇坪县| 丰都县| 永新县| 德阳市| 万安县| 游戏| 隆安县| 沅江市| 左贡县| 登封市| 勐海县| 福贡县| 河北省| 玉龙| 项城市| 青州市| 抚松县| 伊金霍洛旗| 内乡县| 襄垣县| 平顶山市| 邵阳市| 隆化县| 方山县| 格尔木市| 南宫市| 宁南县| 阜康市| 如皋市| 藁城市| 瑞丽市|