搜尋
首頁JavaJava入門java中靜態屬性與動態屬性的區別

java中靜態屬性與動態屬性的區別

Nov 29, 2019 pm 02:32 PM
java動態屬性差別靜態屬性

java中靜態屬性與動態屬性的區別

為什麼static不用建立物件就可以被呼叫?

在未建立物件之前,所有靜態屬性或方法都放在元資料區裡,靜態的可透過類別名稱呼叫。

例如:

public class Cat{
    public static String name;//静态的,不创建对象都存在
    public String color; //动态的,不创建猫的对象不存在这个属性
}
public class Main{
    public static void main(String[] args){
        Cat c =new Cat();
        c.color = "黑色";
        c.name = "喵喵";
        Cat c1 = new Cat();
        c1.color = "蓝";
        System.out.println(c1.name); //正确 这是因为name是静态属性
    }
}

線上教學影片分享:java教學影片

靜態屬性的特徵: 所有在該類別下的物件共享這一個屬性,不創建物件這個屬性依然存在,所以在修改這個屬性時透過類別修改就行了(Cat.name = “小喵”)

動態的屬性只存在於創建的物件裡,只有創建了物件這個屬性才存在。

靜態屬性和動態屬性的區別:

透過堆疊可以找到對象,那麼它能否呼叫元資料區裡的內容? ——可以

那麼能否透過類別呼叫堆裡的內容? ——不行,因為這個過程有一個確定性和不確定性的問題。

透過類別呼叫元資料區的內容,因為物件是動態的,呼叫靜態的東西,呼叫時可保證靜態的東西一定存在,靜態的東西先於物件的存在而存在;從靜態的呼叫堆裡動態的,這時就不確定動態的這個東西是否一定存在。

所以動態的可以呼叫靜態的,靜態的不能呼叫動態的。

public class Cat{
    public static String name;//静态的,不创建对象都存在
    public String color; //动态的,不创建猫的对象不存在这个属性
    public Cat(){
        
    }
    public void foo(){
        color = "黑";//正确
        name = "喵喵";//正确,一定可以调用静态的
        
    }
    public static void test(){
        color = "黑"; //错误,静态方法无法调用动态的属性
        name = "小喵";//正确
        foo();//动态的不一定存在
        Cat c = new Cat();
        c.foo(); //这时再能调用
    }
}

更多相關文章教學請造訪:java入門學習

#

以上是java中靜態屬性與動態屬性的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:CSDN。如有侵權,請聯絡admin@php.cn刪除

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用