Video: 3. Buffer Overflow Exploits and Defenses 2024
Java uygulamalarınız karmaşıklaştığında, kapsamı göz önüne alma ihtiyacı giderek daha da önem kazanmaktadır. ana nedeni, yanlışlıkla, kapsam kurallarını gözlemleyerek uygulamanıza bir hata önerebilmenizdir.
Bu, uygulama tarafından hatalı bir şekilde kullanılan bir alanın veya diğer üyenin (yanlış bir veri değeri ekleme veya bir metoda erişme gibi) sonucunda oluşabilir. yanlış zaman veya hatalı veriler).Ayrıca, yanlış kapsamlandırma, yabancılar için uygulamanızla öngörülemeyen şekilde (virüs gibi) etkileşime girmesi için kapıyı açık bırakabilir.
Varsayılan kapsam, bir sınıf öğesine özel olarak bir kapsam atamamanız durumunda ortaya çıkar.Çoğu Java geliştiricisinin bazı öğeler için varsayılan kapsamın ne olduğunu (ve bir varsayılan kapsam kullanarak kodunuzun belgelenmemiş olduğu anlamına gelir) bilmediği için çok sık kullanılmaz.
Öyle bile olsa, t Bazı Java geliştiricileri buna güvenirler, çünkü varsayılan kapsamın çeşitli öğeler için ne olduğunu biliyorum. Bununla birlikte, varsayılan kapsamı anlayabilmeniz için görünürlüğü - hangi uygulama öğelerinin bir üyeyi görebileceğini ölçmek gerekir. Java aşağıdaki görünürlük seviyelerini (genel kapsülleme sırası) sağlar:
-
Paket: Birkaç sınıf tutmak için kullanılan kapsayıcı. Basit bir dizin yapısıyla çalışırken, bu kitapta verilen örneklerde olduğu gibi, paket birkaç dizini barındıran bir dizindir. sınıf dosyaları.
-
Sınıf: Bir sınıf genellikle tek bir bölümde bulunur. içine derlediğiniz java dosyası. sınıf dosyası. Tek bir sınıf beyanı içerir.
-
Yöntem: Bir öğe, sınıfta veya bir yöntemin parçası olarak bulunabilir. Yöntem öğeyi tutmak için bir kap görevi görür.
-
Blok: Bir öğe bir for bloğu gibi bir kod bloğunda yer alabilir.
Kapsam, kısmen, bir öğe bildirmek için kullanılan yere bağlıdır. Örneğin, bir blok içinde tanımlanan bir değişken (for döngüsü gibi) yalnızca o blok içinde görülebilir. Değişkeni bloğun dışında kullanmaya çalıştığınızda, Java bir istisna görüntüler. Görünürlük dikkate alındığında, bu tablo Java ortamında çeşitli kapsam düzeylerini açıklamaktadır.
Görünürlük | private | (varsayılan) | protected | public |
---|---|---|---|---|
Sınıfından erişilebilir | X | X | X | X |
Pakete erişilebilir | X | X | X | |
Herhangi bir alt sınıfdan erişilebilir | X | X | ||
Herhangi bir yerden erişilebilir | X |
Varsayılan kapsamın şeylerin şemasına nasıl uyduğunu gösterir. Örneğin, varsayılan kapsamı kullanarak bir yöntem bildirirseniz, herhangi bir yöntem aynı pakette bulunduğu sürece onu kullanabilir.Buna ek olarak, yöntemi içeren sınıftan devralan bir sınıf oluşturursanız, alt sınıf yöntemi, aynı pakette bulunduğu sürece kullanabilir.
Bununla birlikte, alt sınıf geçerli paketin dışında bulunuyorsa, yöntemi kullanamazsınız. Kısaca, varsayılan kapsam, korunan kapsamdan biraz daha kısıtlayıcı ancak özel kapsamdan daha kısıtlayıcı.