Tavsiye, 2024

Editörün Seçimi

Java'da Final, Final ve Finalize Arasındaki Fark

'Nihai, nihayet ve sonuçlanan' kelimeleri Java bağlamındadır. Her birine farklı bir işleyiş sağlanır. Final, final ve final arasındaki temel fark, finalin bir erişim değiştiricisi, en sonunda bir blok ve finalize etmenin nesne sınıfının bir metodu olmasıdır. Karşılaştırma tablosunda tartışılan final, final ve final arasında başka bazı farklılıklar var.

Karşılaştırma Tablosu

Karşılaştırma için temelfinalEn sonundaSonuçlandırmak
TemelFinal, Java'da "Anahtar Kelime" ve "erişim değiştiricisi" dir.Sonunda Java'da bir "blok".Sonlandırma, Java'da bir "yöntem" dir.
uygulanabilirFinal, sınıflara, değişkenlere ve yöntemlere uygulanabilir bir anahtar kelimedir.Son olarak, her zaman dene ve yakala blokuyla ilişkilendirilen bir bloktur.finalize (), nesnelere uygulanabilir bir yöntemdir.
Çalışma(1) Son değişken sabittir ve tekrar atanamaz.
(2) Son yöntem çocuk sınıfı tarafından geçersiz kılınamaz.
(3) Final Sınıfı genişletilemez.
Bir "nihayet" bloğu, "try" bloğunda kullanılan kaynakları temizleyin.Sonlandırma yöntemi, nesneyle ilgili etkinlikleri imha edilmeden önce temizler.
infazÇağrı üzerine son yöntem uygulanır."Nihayet" bloğu, "try-catch" bloğunun yürütülmesinden hemen sonra yürütülür.finalize () yöntemi nesnenin imhasından hemen önce çalıştırılır.

Finalin Tanımı

“Final”, Java’da bir anahtar kelimedir. Bu bir erişim değiştiricisidir. “Final” anahtar sözcüğü sınıflara, yöntemlere ve değişkenlere uygulanabilir. Her biriyle nasıl çalıştığını görelim.

Son Değişken

  • Son bir anahtar kelime değişkene uygulandığında, daha fazla değiştirilemez.
  • Beyan edildiğinde son bir değişken başlatılmalıdır.
  • Ortak bir kodlama sözleşmesinde, nihai değişkenler UPPERCASE'te bildirilmiştir.
  • Son değişken, örnek olarak bir belleği işgal etmiyor.
 son int FILE_OPEN = 2; 

Son Yöntemler

  • Sınıftaki bir yöntem nihai olarak bildirildiğinde, alt sınıfı tarafından geçersiz kılınamaz.
  • Final olarak bildirilen küçük yöntemler, derleyici tarafından işlev çağrısı yükünü azaltacak ve performans iyileştirmelerini artıracak "satır içi" yapılabilir.
  • Geçersiz kılınan yöntemler çağrısı dinamik olarak çözülür, ancak bir yöntem son olarak bildirildiğinde geçersiz kılınamaz. Bu nedenle, işlev çağrısı derleme zamanında çözülebilir.
 A sınıfı {final void meth () {System.out.println ("Bu son bir yöntemdir."); }} B sınıfı A uzanıyor {void meth () {// Clas B, A sınıfının yöntemini miras kaldıramaz. System.out.println ("geçersiz kılmaz"); }} 

Final sınıfı

  • Bir sınıf final olarak ilan edildiğinde, herhangi bir alt sınıf tarafından miras alınamaz.
  • Bir sınıfı final olarak ilan etmek, tüm yöntemlerini final olarak otomatik olarak ilan eder.
  • Bir sınıfı hem “soyut” hem de “final” olarak ilan edemezsiniz.
 son sınıf A {// ...} B sınıfı A genişletir {// B sınıfı A sınıfını devralamaz / ...} 

Nihayet Tanımı

  • Java'da “nihayet” her zaman try / catch bloğu ile ilişkilendirilmiş bir bloktur.
  • “Finally” bloğu, try / catch bloğundan sonra ve try / catch bloğundan sonraki koddan önce çalışır.
  • “Nihayet” bloğu istisnanın atılıp atılmadığını yürütür.
  • Bir istisna atıldığında ve hiçbir istisna bloğu istisnanla eşleşmiyorsa, o zaman “sonuç” bloğu yürütülür.
  • Bir yöntem, yakalanmayan bir istisna veya açık bir geri dönüş ifadesi ile try / catch bloğunun içinden arayana geri döndüğünde, “nihai” blok, yöntemin arayana geri dönmesinden hemen önce yürütülür.
  • “Nihayet” bloğu, kaynakları temizlemek veya “try” bloğunda kullanılan belleği boşaltmak için kullanılır.
  • “Nihayet” bloğu isteğe bağlıdır, ancak try / catch bloğundan sonra nihayet blok yazmak iyi bir uygulamadır.
 class FinallyExample {// Bu yöntem, yöntemden bir istisna atar. statik boşluk procA () {try {System.out.println ("procA içinde"); yeni RuntimeException ("demo") atmak; } sonunda {System.out.println ("procA'nın sonunda"); }} // Bir try bloğunun içinden dön. statik boşluk procB () {try {System.out.println ("procB içinde"); dönüş; } sonunda {System.out.println ("Sonunda procB"); }} // Normalde bir deneme bloğu yürütün. statik boşluk procC () {try {System.out.println ("procC içinde"); } sonunda {System.out.println ("Sonunda procC"); }} public static void main (String args []) {try {procA (); } catch (İstisna e) {System.out.println ("İstisna yakalandı"); } procB (); ProcC (); }} // procA procA's'ın sonunda çıktı İstisna procB procB'nin içinde sonunda procC procC'nin içinde kaldı 

Finalize'un tanımı

  • Sonlandırma, nesne sınıfındaki bir yöntemdir.
  • Bir nesne, dosya tanıtıcısı gibi bazı java dışı kaynakları barındırıyor olabilir; o zaman yok edilmeden önce serbest bırakılmalıdır.
  • Bu yöntem, nesneyi tamamen tahrip etmeden önce çöp toplayıcı tarafından çağrılır.
  • Bu yöntem, nesne yok edilmeden önce temizleme etkinliklerini gerçekleştirir.

Yöntemin genel formu finalize () aşağıdaki gibidir.

 korumalı boşluk finalize () {// burada sonlandırma kodu} 

Sonlandırma yöntemi, sınıf dışından erişilememesi için korumalı olarak ilan edilir.

Bu yöntem her zaman çöp toplama işleminden önce çağrılır.

Final, Final ve Finalize Arasındaki Temel Farklar

  1. Anahtar kelime finali bir erişim değiştiricisidir, sonunda bir bloktur ve sonlandırmak bir yöntemdir.
  2. Final anahtar sözcüğü sınıflara, değişkenlere ve sınıfların yöntemlerine uygulanabilir, son olarak istisnaları işlemek için kullanılan try catch bloğu ile ilişkili bir bloktur, sonlandırma yalnızca nesneler üzerinde çalışan bir yöntemdir.
  3. Bir kez final olarak bildirilen değişken sabit olur ve tekrar atanamaz, final olarak bildirilen bir yöntem geçersiz kılınamaz ve bir kez final olarak ilan edilen sınıf hiçbir zaman devralınamaz. Nihai blok, dene ve yakala blokuyla kullanılan kaynakları temizlemek için kullanılır. Sonlandırma yöntemi, nesne yok edilmeden önce bir nesne tarafından kullanılan kaynakları temizlemek için kullanılır.

Sonuç:

Bir yöntem üzerine uygulandığında, final, nihayet ve sonuçlandırmanın farklı bir etkisi vardır.

Top