วิธีการเขียนโปรแกรมคอมพิวเตอร์ในแนววัตถุที่ประกาศในชั้นเรียน แต่ไม่ได้ขึ้นอยู่กับการสร้างอินสแตนซ์เฉพาะของชั้นนั้นเรียกว่าวิธีการคงที่ ภาษาโปรแกรมส่วนใหญ่รวมถึงคำสำคัญ คงที่ ในการประกาศของวิธีการที่จะทำให้วิธีการแบบคงที่ วิธีการเหล่านี้เป็นของชั้นที่พวกเขามีอยู่ในและไม่ให้วัตถุใด ๆ ยกตัวอย่างจากชั้นเรียนที่ พวกเขามักจะเรียกว่า วิธีการเรียน
ปกติแล้วชื่อตัวอักษรของคลาสจะใช้ในการเข้าถึงวิธีการแบบคงที่แทนการอ้างอิงด้วยชื่อของวัตถุที่สร้างอินสแตนซ์ อนุญาตให้ใช้ใน Java เพื่อใช้ชื่อวัตถุเพื่ออ้างถึงวิธีการเหล่านี้ แต่ไม่แนะนำให้ใช้ หากใช้ชื่อวัตถุบุคคลที่อ่านรหัสอาจสร้างความสับสนให้กับหนึ่งในวิธีการเหล่านี้ด้วยวิธีการอินสแตนซ์
วิธีการแบบสแตติกมักใช้ในคลาสยูทิลิตี้ที่ไม่ได้ขึ้นอยู่กับตัวแปรอินสแตนซ์จากคลาสใด ๆ โดยเฉพาะ พวกมันยังถูกใช้เมื่อโปรแกรมเมอร์ต้องการเข้าถึงเมธอด แต่ไม่จำเป็นต้องสร้างอินสแตนซ์ของคลาสที่มีอยู่ในนั้นคลาสยูทิลิตี้มักจะไม่อินสแตนซ์เป็นวัตถุ มันจะผิดปกติสำหรับวิธีการยูทิลิตี้ที่จะต้องมีการแก้ไขข้อมูลวัตถุ เมธอดจากคลาส java.lang.math เช่น pow () จะเป็นตัวอย่างของวิธีการใช้เมธอดประเภทนี้ในคลาสยูทิลิตี้
วิธีการอินสแตนซ์สามารถเข้าถึงตัวแปรอินสแตนซ์ตัวแปรสแตติกวิธีอินสแตนซ์และวิธีสแตติกโดยตรง วิธีการแบบสแตติกไม่สามารถเข้าถึงตัวแปรอินสแตนซ์และวิธีการอินสแตนซ์โดยตรง เนื่องจากลักษณะของวิธีการอินสแตนซ์ที่มีการเข้าถึงสมาชิกชั้นเรียนได้ดีกว่าวิธีแบบคงที่วิธีการแบบอินสแตนซ์เป็นชนิดของวิธีการที่ปกติใช้ในชั้นเรียนปกติ
ข้อเสียเปรียบหลักประการหนึ่งของวิธีการคงที่เกิดขึ้นระหว่างการสืบทอดเมื่อมีการใช้ polymorphism ตราบใดที่เมธอด static parent ไม่ได้ถูกประกาศขั้นสุดท้ายเมธอด static static ลูกเดียวกันก็สามารถถูกโค๊ดได้ในคลาส child ราวกับว่ามันถูกเขียนทับ เทคนิคนี้เรียกว่าการซ่อนแทนการลบล้างเนื่องจากวิธีการแบบสแตติกไม่สามารถเขียนทับได้
เมื่อการซ่อนถูกใช้หากเข้าถึงวิธีการหลักแบบคงที่โดยใช้ชื่อคลาสจะใช้วิธีการหลัก หากมีการเข้าถึงวิธีการคงที่ของเด็กที่ถูกแทนที่โดยใช้ชื่อวัตถุระบบจะใช้วิธีการลูกที่ถูกแทนที่ ปัญหาเกิดขึ้นเมื่อวัตถุลูกเป็น upcast ในฐานะผู้ปกครอง ในกรณีนี้การเรียกใช้เมธอดสแตติกชายด์แบบ upcast จะใช้เมธอด parent แทนเมธอด child ที่คาดไว้ ด้วยความแตกต่างที่แท้จริงวิธีการของเด็กจะเป็นวิธีการเปิดใช้งานหลังจาก upcast


