中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java類和對象原理的示例分析

發布時間:2022-03-15 09:10:50 來源:億速云 閱讀:156 作者:小新 欄目:開發技術

小編給大家分享一下Java類和對象原理的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

面向對象、面向過程

什么是類?

什么是對象?

這是非常抽象的兩個概念!!!!!!!!

在說清楚類和對象的概念之前,給大家講一下什么是面向對象、面向過程,以此來推出我們類和對象的概念。

面向過程:以洗衣服為例:拿盆、放水、放衣服、放洗衣粉、手搓、換水、擰干、晾衣服,這個過程就是面向過程。 

面向對象:以洗衣服為例:人把衣服放進洗衣機,倒入洗衣粉,洗完晾干,不需要關心洗衣服整個過程是怎么完成的,只需要找對象,創建對象,使用對象。在好比我們使用toString函數,我們并不關心toString函數具體的實現過程,我們直接交給Arrays幫我們實現就可以了,這就是面向對象。

對象從哪來的?對象就是從類來的,有類之后才有對象,人,洗衣機 ,洗衣粉,都是單獨的一個類。由類再產生對象,我們就叫做創建對象。對象都創建好了,每個對象都具備一些行為一些屬性,然后對象之間相互完成就可以了。這就是面向對象和面向過程。

要面向對象,我們就要找到對象,而對象是由類來的,類是從哪來的?我們是需要去抽象的。比如說:我們都是人,人的話都有共同的屬性,姓名、性別、年齡、吃飯、睡覺,每個人都會具備這些,相當于這就是一個模板,通過這個模板可以產生很多的對象,這些對象都具備這些相同的屬性。就是來抽象這個人,由這個人來創建對象,而這個人就是一個類。真正的要有這樣一個人,讓他是一個對象,是一個實體,就需要把他創建出來,通過new來創建。

定義類

class Person{
 
    
}//定義一個類,這個類叫Person,類名一定要是大駝峰
 
 
 
 
 
class Person{
    //類里面包含字段,也叫做屬性,也叫做成員變量
    //也包含方法
    //一個類就是由方法和字段組成的
    public String name;//屬性
    public int age;//屬性
    //什么是方法?可以解讀為這個人的行為
    public void eat(){
        System.out.println(name+" 正在吃飯");
    }
    public void sleep(){
        System.out.println(name+" 正在睡覺");
    }
 
}

由類產生對象的過程,術語我們叫做實例化,通過new關鍵字來實例化對象。

public class TestDemo {
    public static void main(String[] args) {
        Person person//定義一個變量person,此時類Person也相當于類型的意思,和int a = 10,a的類型是int一樣
 
    }
}

由類Person定義的變量person是引用變量,意味著它的初值可以給null

public class TestDemo {
    public static void main(String[] args) {
        Person person = null;
 
    }
}

實例化對象

public class TestDemo {
    public static void main(String[] args) {
        Person person = new Person();//由類Person實例化了一個對象
 
    }
}

一個類可以實例化多個對象

public class TestDemo {
    public static void main(String[] args) {
        Person person = new Person();//由類Person實例化了一個對象
        Person person1 = new Person();
        Person person2 = new Person();
        Person person3 = new Person();
        Person person4 = new Person();
 
    }
}

類的成員

普通成員變量

字段是定義在類的內部方法的外部,如果定義到方法里頭叫做局部變量,定義到方法外頭叫做成員變量 

 如何訪問成員變量,成員變量分為兩種:(普通成員變量、靜態成員變量)。普通的成員變量的訪問方式通過引用來訪問。

Java類和對象原理的示例分析

成員變量沒有賦初值的情況下都有一個默認的值

 如何給成員變量賦值

Java類和對象原理的示例分析

如果是一個普通的成員變量,它的內存在對象里面,而不是說所有對象共用一份。每個對象都各有一份自己的name和age

Java類和對象原理的示例分析

Java類和對象原理的示例分析

方法也分為兩種:一種叫做普通成員方法,一種叫做靜態成員方法

普通的成員方法訪問方式也是一樣的,通過對象的引用來訪問我的方法。

Java類和對象原理的示例分析

靜態成員變量

被static修飾的的變量叫靜態成員變量,也叫做類變量,是放在方法區的

靜態成員變量的訪問方式是通過類名.靜態的成員屬性/方法。

不依賴對象

class Person{
 
    public String name;
    public int age;
 
    public static int count;
 
    public void eat(){
        System.out.println(name+" 正在吃飯");
    }
    public void sleep(){
        System.out.println(name+" 正在睡覺");
    }
 
}
 
public class TestDemo {
    public static void main(String[] args) {
        Person.count++;
        System.out.println(Person.count);
        System.out.println("================");
        Person.count++;
        System.out.println(Person.count);
 
    }
}

打印結果;

Java類和對象原理的示例分析

count是被static修飾的靜態成員變量,是放在方法區的,不屬于某個對象,屬于類。正確的訪問靜態成員變量或者方法只要  類名.靜態成員變量/方法    就可以了,所有靜態的東西在方法區里只存一份,所以加2遍都是加的count本身,所以第二次打印的結果是2。

普通的方法內部不能夠定義靜態的變量

Java類和對象原理的示例分析

1.static定義的變量是類變量,屬于類,(定義在方法內部就屬于方法了,所以是錯誤的)

2.eat方法的調用,需要對應的引用來調用。但如果可以定義static的變量,類Person就可以調用,所以兩者直接是矛盾的,eat需要對應的引用來調用。size只需要類就可以調用。所以普通的方法內部, 不能夠定義靜態的變量。

靜態的方法也不可以定義靜態變量

Java類和對象原理的示例分析

static定義的變量是類變量,屬于類,(定義在方法內部就屬于方法了,這樣是做不到的,所以是錯誤的)

總結:靜態的成員變量是不可以在方法中定義的 

普通方法里面是可以調用靜態方法的

class Person{
 
    public String name;
    public int age;
 
    public static int count;
 
    public void eat(){
 
        System.out.println(name+" 正在吃飯");
    }
    public void sleep(){
        staticFunc();
        System.out.println(name+" 正在睡覺");
    }
    public static void staticFunc(){
        System.out.println("static::func");
    }
 
}
 
public class TestDemo {
    public static void main(String[] args) {
        Person person = new Person();
         person.eat();
         person.sleep();
    }
}

 打印結果:

Java類和對象原理的示例分析

 靜態方法內部不能調用普通方法

Java類和對象原理的示例分析

 靜態內部不可以調用普通方法,因為靜態的方法不依賴于對象, 通過類名就可以調用,但沒有對象普通方法沒法調用。

main函數為什么是靜態的

Java類和對象原理的示例分析

 一個引用不可以同時指向多個對象

Java類和對象原理的示例分析

引用肯定是在棧上嗎?肯定不是

Java類和對象原理的示例分析

 看綠線,畫圖解析

Java類和對象原理的示例分析

小寫的person屬于TestDemo這個類的成員變量 

final修飾

Java類和對象原理的示例分析

private實現封裝

private/ public 這兩個關鍵字表示 "訪問權限控制"

被 public 修飾的成員變量或者成員方法, 可以直接被類的調用者使用.

被 private 修飾的成員變量或者成員方法, 不能被類的調用者使用.

Java類和對象原理的示例分析

提供接口

Java類和對象原理的示例分析

Java類和對象原理的示例分析

 打印結果:

Java類和對象原理的示例分析

this代表當前對象的引用

Java類和對象原理的示例分析

構造方法

構造方法:方法名和類名是相同的,且構造方法比較特殊,沒有返回值

構造方法是干嘛的?我們需要知道一個對象的產生(對象的實例化) 分為幾步

1.為對象分配內存

2.調用合適的構造方法

Java類和對象原理的示例分析

Java類和對象原理的示例分析

這就是一個構造方法

前面的訪問修飾符可以是public,

Java類和對象原理的示例分析

 調用構造方法:

Java類和對象原理的示例分析

打印結果:

Java類和對象原理的示例分析

Java類和對象原理的示例分析

不帶參數和帶一個參數和帶兩個參數的構造方法

Java類和對象原理的示例分析

 調用構造方法:

Java類和對象原理的示例分析

Java類和對象原理的示例分析

this的區別

Java類和對象原理的示例分析

第一種:

Java類和對象原理的示例分析

 第二種:

Java類和對象原理的示例分析

代表當前對象的eat方法

 第三種:

調用不帶參數的構造方法,

Java類和對象原理的示例分析

Java類和對象原理的示例分析

 打印結果 :

Java類和對象原理的示例分析

this函數必須放到第一行,只能存放在構造函數當中

Java類和對象原理的示例分析

代碼塊

Java類和對象原理的示例分析

本地代碼塊:

兩個括號

Java類和對象原理的示例分析

 實例代碼塊和靜態代碼塊:

Java類和對象原理的示例分析

靜態代碼塊不管生成多少個對象,其只會執行一次,且是最先執行的。 靜態代碼塊執行完畢后, 實例代碼塊(構造塊)執行,再然后是構造函數執行。 

看完了這篇文章,相信你對“Java類和對象原理的示例分析”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

闽清县| 温宿县| 门源| 颍上县| 安义县| 庆云县| 泾川县| 罗田县| 容城县| 江安县| 满城县| 京山县| 澄城县| 瑞安市| 清新县| 军事| 桐乡市| 云龙县| 定州市| 黑河市| 长岛县| 闵行区| 长兴县| 东海县| 黄浦区| 阜宁县| 莱西市| 潍坊市| 绥宁县| 三门峡市| 石家庄市| 金寨县| 五华县| 兴义市| 湛江市| 弥勒县| 凤山县| 尼勒克县| 上饶县| 察哈| 宁武县|