การประกาศตัวแปรprivate static varName;
แตกต่างจากการประกาศตัวแปรprivate varName;
หรือไม่?
ใช่ทั้งสองแตกต่างกัน และเป็นครั้งแรกหนึ่งเรียกว่าclass variable
เพราะมันเก็บค่าเดียวสำหรับการว่าclass
ในขณะที่คนอื่น ๆ จะเรียกว่าเพราะมันสามารถเก็บค่าที่แตกต่างกันสำหรับการที่แตกต่างกันinstance variable
instances(Objects)
อันแรกถูกสร้างเพียงครั้งเดียวใน jvm และอีกอันหนึ่งถูกสร้างขึ้นหนึ่งครั้งต่อหนึ่งอินสแตนซ์นั่นคือถ้าคุณมี 10 อินสแตนซ์คุณจะมี 10 private varName;
ใน jvm ที่แตกต่างกัน
ไม่ประกาศตัวแปรstatic
ให้คุณสมบัติพิเศษอื่น ๆ ?
ใช่ตัวแปรแบบสแตติกได้รับคุณสมบัติที่แตกต่างจากตัวแปรอินสแตนซ์ทั่วไป ฉันได้กล่าวเพียงไม่กี่แล้วและขอให้เห็นบางส่วนที่นี่: class variables
(เช่นตัวแปรซึ่งได้รับการประกาศให้เป็นคงที่) ClassName.varName
สามารถเข้าถึงได้โดยตรงโดยใช้ชื่อชั้นเช่น และวัตถุใด ๆ ของคลาสนั้นสามารถเข้าถึงและแก้ไขค่าของมันซึ่งแตกต่างจากตัวแปรอินสแตนซ์ที่เข้าถึงได้โดยวัตถุที่เกี่ยวข้องเท่านั้น ตัวแปรคลาสสามารถใช้ในวิธีการคงที่
อะไรคือการใช้ private static variable
ใน Java คืออะไร?
เหตุผลprivate static variable
ไม่แตกต่างจากpublic static variable
คนแรกให้คุณควบคุมได้มากขึ้น IMO คุณสามารถแทนที่ได้อย่างแท้จริงpublic static variable
ด้วยโดยprivate static variable
ใช้public static
วิธี getter และ setter
หนึ่งในพื้นที่ที่ใช้กันอย่างแพร่หลายprivate static variable
ในการใช้Singleton
รูปแบบง่าย ๆที่คุณจะมีเพียงตัวอย่างเดียวของชั้นเรียนนั้นในโลกทั้งใบ static
ตัวระบุที่นี่มีบทบาทสำคัญในการทำให้อินสแตนซ์เดียวนั้นสามารถเข้าถึงได้โดยโลกภายนอก (แน่นอนว่าวิธีการทะเยอทะยานในที่สาธารณะยังมีบทบาทหลักด้วย)
public class Singleton {
private static Singleton singletonInstance = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return Singleton.singletonInstance;
}
}