国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java面向?qū)ο?1——類與對(duì)象

這篇具有很好參考價(jià)值的文章主要介紹了Java面向?qū)ο?1——類與對(duì)象。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

大家好,我是白夜,今天和大家聊聊類與對(duì)象

一、初識(shí)面向?qū)ο螅私猓?/h2>

1.1、面向過程和面向?qū)ο?/h3>

面向過程編程

C 語言就是面向過程編程的,關(guān)注的是過程,分析出求解問題的步驟,通過函數(shù)調(diào)用逐步解決問題。

面向?qū)ο缶幊?/strong>

JAVA 是基于面向?qū)ο蟮?,關(guān)注的是對(duì)象,將一件事情拆分成不同的對(duì)象,靠對(duì)象之間的交互完成。

舉個(gè)例子,比如洗衣服

面向過程:1.拿桶 2.把衣服放桶里 3.接水 4.放洗衣服 5.搓 6.再接水 7.把衣服擰干 8.曬衣服

面向?qū)ο螅?.把衣服和洗衣粉放進(jìn)洗衣機(jī) 2.打開洗衣機(jī) 3.把衣服拿出來晾干

在這里洗衣機(jī)就是一個(gè)對(duì)象,所以只要操作洗衣機(jī)所具備的功能,都要定義在對(duì)象中。

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

面向過程:注重的是過程,在整個(gè)過程中所涉及的行為,就是功能。

面向?qū)ο螅鹤⒅氐氖?strong>對(duì)象,也就是參與過程所涉及到的主體。是通過邏輯將一個(gè)個(gè)功能實(shí)現(xiàn)連接起來

二、類與對(duì)象

什么是類?

? 類是具備某些共同特征的實(shí)體的集合,是對(duì)所具有相同特征實(shí)體的抽象, 例如人類、車類、星球類,動(dòng)物類, 豬類等

什么是對(duì)象?

對(duì)象是類的實(shí)例,簡單的認(rèn)為對(duì)象就是類中具體的個(gè)體。

用一個(gè)例子給你說明一下他們的關(guān)系:

比如“人類”就是一個(gè)類,那么具體的某個(gè)人“張三”就是“人類”這個(gè)類的對(duì)象,而“名字、年齡”等信息就是對(duì)象的屬性,人的動(dòng)作比如“吃飯、穿衣”等就是對(duì)象的方法

2.1、類的定義

語法:

class People{
    //成員變量/字段/屬性
    //修飾符/數(shù)據(jù)類型/變量名
    public String name ;
    public String sex;
    public int age;

    //成員方法/行為
    public void show(){
        System.out.println("姓名:"+name+"性別:"+sex+"年齡:"+age);
    }
}

要求:

  1. 類名,大駝峰,見名知意,不能以jdk中存在的類命名
  2. 成員變量名和方法名,小駝峰,見名知意
  3. 在類名、方法名、成員變量名上面寫文檔注釋

2.2、類的實(shí)例化

用類類型創(chuàng)建對(duì)象的過程,稱為類的實(shí)例化

我們已經(jīng)知道通過class關(guān)鍵字來定義一個(gè)類了,而我們知道類只是相當(dāng)于一個(gè)模板,所以我們要通過類來實(shí)例化對(duì)象,由類產(chǎn)生對(duì)象的過程叫做 實(shí)例化一個(gè)對(duì)象。

2.2.1、語法

class People{//類名大駝峰
    //成員變量/字段/屬性
    public String name ;
    public String sex;
    public int age;

    //成員方法/行為
    public void show(){
        System.out.println("姓名:"+name+"性別:"+sex+"年齡:"+age);
    }
}
 
public class Test {
    public static void main(String[] args) {
        //我們通過 new 關(guān)鍵字來實(shí)例化一個(gè)對(duì)象
        People p1 = new People();
        //通過 new 關(guān)鍵字我們是可以實(shí)例化多個(gè)對(duì)象的
        People p2 = new People();
        People p3 = new People();
    }
}

Java面向?qū)ο?1——類與對(duì)象

2.2.2、類在內(nèi)存中的分析

每創(chuàng)建一個(gè)對(duì)象就會(huì)在內(nèi)存中開辟一片空間,在棧上會(huì)開辟一個(gè)引用地址,會(huì)指向堆上的對(duì)象

p1 和p2 這些變量都是局部變量它們(對(duì)象)屬于引用

注意:類里面的方法并不是是存在堆區(qū)的 ,方法本身是不占內(nèi)存的,方法是存在方法區(qū)里的方法表中,在每個(gè)對(duì)象 new 好之后前面有幾個(gè)字節(jié)存的就是方法表的地址,只有在調(diào)用這個(gè)方法時(shí),會(huì)通過方法表的地址找到這個(gè)這個(gè)方法,然后在棧上為這個(gè)方法開辟棧幀。

Java面向?qū)ο?1——類與對(duì)象

2.2.3、訪問類的成員

成員變量的訪問:對(duì)象名 . 屬性名

成員方法的訪問:對(duì)象名 . 方法名

class People{
    //成員變量/字段/屬性
    public String name ;
    public String sex;
    public int age;
    //成員方法/行為
    public void show(){
        System.out.println("姓名:"+name+"性別:"+sex+"年齡:"+age);
    }
}
public class Test {
    public static void main(String[] args) {
        People p1 = new People();
        System.out.println(p1.name);
        System.out.println(p1.sex);
        System.out.println(p1.age);
        p1.show();
    }
}

注意:這里的成員變量并沒有初始化,不同于局部變量不初始化會(huì)報(bào)錯(cuò)。成員變量不初始化是其類型對(duì)應(yīng)的0值。

Java面向?qū)ο?1——類與對(duì)象

2.3、類的成員

2.3.1、初始化成員變量

我們把定義在類的內(nèi)部,方法的外部的變量叫“字段”或者叫它成員變量有時(shí)候也叫它“屬性"。這三種叫法并沒有嚴(yán)格區(qū)分

public static void main(String[] args) {
        People p1 = new People();
        p1.name = "java";
        p1.sex = "nan";
        p1.age = 50;
        p1.show();
    }
}

還有一種就是在定義成員變量的時(shí)候賦值,但并不建議這樣寫,因?yàn)樵趯?shí)例化后還是能初始化,沒必要多此一舉。而且這個(gè)類是一個(gè)模板,把模板初始化也是不合適的。

class People{
    //成員變量/字段/屬性
    public String name = "zhangsan" ;
    public String sex = "lisi";
    public int age = 22;
    //成員方法/行為
    public void show(){
        System.out.println("姓名:"+name+"性別:"+sex+"年齡:"+age);
    }
}

再來看一個(gè)代碼,這個(gè)代碼是什么意思呢?

public static void main(String[] args) {
    	//p1和p2都指向了這個(gè)對(duì)象
        People p1 = new People();
        People p2 = p1;
}

Java面向?qū)ο?1——類與對(duì)象

就是我們?cè)?jīng)講過的方法,用于描述一個(gè)對(duì)象的行為.

class People{
    //成員變量/字段/屬性
    public String name ;
    public String sex;
    public int age;
    //成員方法/行為
    public void show(){
        System.out.println("姓名:"+name+"性別:"+sex+"年齡:"+age);
    }
    public void prt(){
        System.out.println("愛java");
    }
}
public class Test {
    public static void main(String[] args) {
        People p1 = new People();
        p1.show();
        p1.prt();
    }
}

Java面向?qū)ο?1——類與對(duì)象

2.3、修飾符(了解)

對(duì) Java 當(dāng)中的,類,變量,方法,構(gòu)造方法等等.....進(jìn)行修飾,賦予被修飾內(nèi)容特殊意義。

public(公共訪問控制符):它表示公共的意思,被public修飾的類、接口、方法和變量等成員都可以被任何其他類或?qū)ο笏L問。

private(私有訪問控制符):它表示私有的意思,只有在定義該成員的類內(nèi)部才能被訪問。被private修飾的類、方法、變量或接口只能在自己的類中被調(diào)用,無法被同一個(gè)包內(nèi)或者其他包中的其他類或?qū)ο笏L問。

protected(保護(hù)訪問控制符): 它表示受保護(hù)的意思。被protected修飾的類、方法、變量或者接口只能被相同包或其子類中的類或?qū)ο笏L問。

static(靜態(tài)修飾符):它可以用來修飾成員變量、成員方法和代碼塊。當(dāng)一個(gè)變量或方法被聲明為?static?時(shí),它就是一個(gè)靜態(tài)成員。

final:有最終的、不可變更的意思,它可用于修飾類、變量和方法。用于表示它修飾的類、方法和變量不可改變。

native: 本地修飾符。指定此方法的方法體是用其他語言在程序外部編寫的

abstract: 將一個(gè)類聲明為抽象類,沒有實(shí)現(xiàn)的方法,需要子類提供方法實(shí)現(xiàn)。

transient(過度修飾符): 指定該變量是系統(tǒng)保留,暫無特別作用的臨時(shí)性變量。

volatile: 指定該變量可以同時(shí)被幾個(gè)線程控制和修改。

synchronize: 同步修飾符,在多個(gè)線程中,該修飾符用于在運(yùn)行前,對(duì)他所屬的方法加鎖,以防止其他線程的訪問,運(yùn)行結(jié)束后解鎖。

三、構(gòu)造方法

3.1、構(gòu)造方法的基本使用

構(gòu)造方法是一種特殊方法, 使用關(guān)鍵字new實(shí)例化新對(duì)象時(shí)會(huì)被自動(dòng)調(diào)用, 用于完成初始化操作 構(gòu)造方法沒有返回值,且方法名和類名是相同的 構(gòu)造方法是用來構(gòu)造對(duì)象的(實(shí)例化對(duì)象)

new 執(zhí)行過程

1.為對(duì)象分配內(nèi)存空間

2.調(diào)用合適的構(gòu)造方法

語法:

  1. 構(gòu)造方法的名字和類名完全一致(包括大小寫完全一致)。

  2. 沒有返回值類型(void也不行)。

  3. 構(gòu)造方法方法體不能返回任何的值(即不能在方法體中return 值)。

  4. 其他的和普通方法類似 ,可以有修飾符(public、protected、private、默認(rèn)),可以有形參列表。

  5. 構(gòu)造方法必須有方法體。

  6. 構(gòu)造方法不能有任何非訪問性質(zhì)的修飾符修飾,例如 static、final、synchronized、abstract等都不能修飾構(gòu)造方法。

class People{
    private String name ;
    private int age;//普通成員變量
    public static int cont;//靜態(tài)成員變量
	
    public People(){
        System.out.println("這是一個(gè)不帶有參數(shù)的構(gòu)造方法");
    }

}
public class Test {
    public static void main(String[] args) {
       People p = new People();
    }
}

運(yùn)行結(jié)果:

Java面向?qū)ο?1——類與對(duì)象

那么為什么我們前面示例化對(duì)象時(shí)為什么沒有構(gòu)造方法呢?

如果我們沒有寫構(gòu)造方法,系統(tǒng)默認(rèn)會(huì)有一個(gè)沒有參數(shù)且沒有任何內(nèi)容的構(gòu)造方法

Java面向?qū)ο?1——類與對(duì)象

特點(diǎn):

  1. 每一個(gè)類中都至少有一個(gè)構(gòu)造方法;
  2. 如果沒有看到(顯示的),那么存在一個(gè)隱式的無參數(shù)的構(gòu)造方法;
  3. 如果一個(gè)類中有顯示的構(gòu)造方法,那么隱式的無參的構(gòu)造方法就不存在了;

3.2、構(gòu)造方法的重載

構(gòu)造方法和方法一樣是可以實(shí)現(xiàn)重載的, 由于需求不同,會(huì)創(chuàng)建多個(gè)構(gòu)造方法

重載:

1.方法名要相同
2.參數(shù)列表不同(類型和個(gè)數(shù))
3.返回值不做要求

class People{
    private String name ;
    private int age;//普通成員變量
    public static int cont;//靜態(tài)成員變量

    public People(){
        System.out.println("這是一個(gè)不帶參的構(gòu)造方法");
    }
    public People(String name){
        System.out.println("這是一個(gè)帶有一個(gè)參數(shù)的構(gòu)造方法");
    }
    public  People(String name,String sex){
        System.out.println("這是一個(gè)帶有兩個(gè)參數(shù)的構(gòu)造方法");
    }

}
public class Test {
    public static void main(String[] args) {
       People p = new People();
       People p1 = new People("張三");
       People p2 = new People("李四","男");
    }
}

Java面向?qū)ο?1——類與對(duì)象

四、匿名對(duì)象(了解)

概念:

? 匿名對(duì)象,就是創(chuàng)建的時(shí)候沒有使用變量接收保存一個(gè)對(duì)象。但是匿名對(duì)象本質(zhì)也是一個(gè)對(duì)象(具體的值)

作用:

? 可以節(jié)約資源,因?yàn)镚C【垃圾回收器】會(huì)不定時(shí)回收匿名對(duì)象

使用場(chǎng)景

? 匿名對(duì)象一般用在:只需要使用一次的情況(如:調(diào)用一次非static修飾的普通方法、作為方法實(shí)參使用)文章來源地址http://www.zghlxwxcb.cn/news/detail-844581.html

public class Main {
    public static void main(String[] args) {
        // 創(chuàng)建匿名對(duì)象并調(diào)用方法
        new MyClass().doSomething();

        // 在方法參數(shù)中使用匿名對(duì)象
        printMessage(new Message("Hello, World!"));
    }

    static void printMessage(Message message) {
        System.out.println(message.getText());
    }
}

class MyClass {
    void doSomething() {
        System.out.println("Doing something...");
    }
}

class Message {
    private String text;

    public Message(String text) {
        this.text = text;
    }

    public String getText() {
        return text;
    }
}

到了這里,關(guān)于Java面向?qū)ο?1——類與對(duì)象的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包