簡體   English   中英

Java構造函數內部的私有變量

[英]Private Variables inside inside a Constructor in Java

我很困惑為什么在構造函數或主函數內部創建變量時不能表示私有變量,卻可以在類內部進行私有表示。

public class Stuff
{
    private double x;

    public Stuff(int i, double d) {
        private double y;
    }

    public static void main(String[] args) {
        private double z;
    }
}

訪問修飾符在函數內部沒有意義,因為變量在函數結束后立即超出范圍

一個類具有可以由某些其他類訪問的字段和方法,並且取決於訪問級別修飾符(私有,默認訪問,保護或公共),該類和類始終可以訪問該類本身。 您可以將字段和方法視為類的屬性/屬性。

您將字段描述為“類中的變量,該變量不在任何方法內” 字段描述類具有的值,方法描述類(或類的對象)可以做什么。

為了簡化本文,忽略static關鍵字,類是用於創建對象的模板。 您為某個特定類創建的每個對象都將具有一組自己的字段和方法(除非字段或方法是static )。

如果將類的字段設置為private則該類之外的任何內容都無法訪問它。 只有類本身(本質上是指類的方法)才能到達它。 私有方法也是如此。 該類中只有其他方法可以到達私有方法。

考慮以下示例:

public class Person {
    private String name;
    public int id;

    public Person(String name, int id) {
        this.name = name;
        this.id = id;
    }

    public String getName() {
        return name;
    }
}

如果有人想通過直接引用這個人的名字來獲得這個人的名字,他們將無法做到,因為這個名字是private 他們將不得不使用方法getName()來做到這一點。

Person person = new Person(John, 5);
System.out.print(person.name); //does not work

Person person = new Person(John, 5);
System.out.print(person.getName()); //works

這很好,因為如果可以直接訪問該名稱,則可以編寫:

person.name = "Felicity";

並更改不需要的人名(我們可以使用id來完成此操作,這可能會造成麻煩)。 名稱為私有時,這是不可能的。

但是,方法內部的變量不是field 意味着它不是對象的屬性。 它只是一個臨時變量,它存在以允許該方法執行其想要的操作。 方法執行完畢后,變量將被銷毀。 將此類變量聲明為private或其他任何變量完全沒有意義,因此是不允許的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM