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

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

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

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

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

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

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

面向過程:

在這里插入圖片描述

面向?qū)ο?

在這里插入圖片描述

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

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

萬物皆對象

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

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

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

在這里插入圖片描述

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

類的創(chuàng)建

1.屬性(field 成員變量)

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

屬性定義格式:

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

2.方法

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

方法定義格式:

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

? //Java語句

}

我們以上面王者榮耀英雄類創(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);
    }

}

對象的創(chuàng)建

接下來我們對我們創(chuàng)建好的類來創(chuàng)建對象

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

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

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

在這里插入圖片描述

創(chuàng)建對象的過程:

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

(2)創(chuàng)建對象,在堆中開辟空間

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

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

構(gòu)造器

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

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

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

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

}

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

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

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

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

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

下面例子:

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)建兩個英雄對象
        Hero make = new Hero();
        make.Name="馬克";
        Hero lan=new Hero();
        lan.Name="瀾";
        //輸出兩個屬性
        make.print();
        lan.print();
    }
}

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

在這里插入圖片描述

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

構(gòu)造器重載

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

在這里插入圖片描述

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

在這里插入圖片描述

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

在這里插入圖片描述

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

在這里插入圖片描述

this的使用

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

this可以修飾屬性

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

在這里插入圖片描述

this修飾方法

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

在這里插入圖片描述

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

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

在這里插入圖片描述

static修飾

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

static修飾屬性

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

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

在這里插入圖片描述

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

static修飾方法:

  • static和public都是修飾符,并列的沒有先后順序,先寫誰后寫誰都行
  • 在靜態(tài)方法中不能使用this關(guān)鍵字
  • 在靜態(tài)方法中不能訪問非靜態(tài)的方法
  • 在靜態(tài)方法中不能訪問非靜態(tài)的屬性
  • 靜態(tài)的方法可以用 對象名.方法名去調(diào)用 也可以 用 類名.方法名 (推薦)
  • 在同一個類中可以直接調(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;
    }
    //這是一個main方法,是程序的入口:
    public static void main(String[] args) {
        Test t = new Test();
        t.a();
        Test t2 = new Test();
        t2.a();
    }
}

包(import)

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

包名的定義:

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

在這里插入圖片描述

導(dǎo)包:

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

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

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

(4)在java.lang包下的類,可以直接使用無需導(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 {
    //這是一個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)入后,同一個類中有相同的方法的時候,會優(yōu)先走自己定義的方法。
    public static int round(double a){
        return 1000;
    }
}

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

相關(guān)文章

  • 解析Spring Mvc Long類型精度丟失問題

    解析Spring Mvc Long類型精度丟失問題

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

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

    這篇文章主要介紹了奇偶排序算法及Java數(shù)組的實(shí)現(xiàn),奇偶排序的時間復(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工程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • Java實(shí)體類中Set按照對象的某個字段對set排序

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

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

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

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

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

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

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

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

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

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

    java split()使用方法解析

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

    java的JsonObject對象提取值方法

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

最新評論

来安县| 新安县| 宁安市| 恩平市| 郎溪县| 江油市| 马公市| 墨江| 普兰县| 衡阳市| 沈丘县| 松溪县| 临猗县| 万盛区| 彰武县| 江华| 新余市| 黄大仙区| 岳池县| 永清县| 茶陵县| 嘉黎县| 邯郸县| 逊克县| 光泽县| 江源县| 太谷县| 宁武县| 恭城| 镇宁| 威远县| 得荣县| 新巴尔虎右旗| 长沙市| 化德县| 商都县| 区。| 来宾市| 北安市| 如皋市| 肇庆市|