
Ulan hepinizin ayrı ayrı b.kunu yiyim.Yerimde oturtmadınız beni yemin ediyorum. Allah yolunuzu açık etsin!
1.1 sürümünde Java’ya eklenen dahili sınıflar, bir çok açıdan bize avantaj sağlıyorlar. Dahili sınıfların ne olduğudan kısaca bahsedip, sağladığı avantajlar üzerine birkaç şey söylemek istiyorum.
Bir sınıfın içinde tanımlanan sınıflara dahili sınıf adı veriliyor. Normal bir sınıf bir paketin üyesi iken, dahili bir sınıf ise içinde tanımlandığı sınıfın bir üyesi oluyor.
Dahili sınıfları 4’e ayırıyoruz: Statik üye sınıflar, statik olmayan üye sınıflar, yerel sınıflar ve isimsiz sınıflar.
Statik üye sınıf, tanımlandığı bir sınıfın statik bir üyesi oluyor (çok açıklayıcı oldu değil mi
). Statik üye sınıflar, aynı statik metodlar gibi, tanımlandığı sınıfın diğer statik üyelerine erişim yapabiliyorken, statik olmayan alanlarına doğrudan erişim yapamıyor.
Statik olmayan üye sınıf da içinde tanımlandığı sınıfın bir üyesi iken, statik üye sınıfın aksine tanımlandığı sınıfın private da dahil tüm üyelerine doğrudan erişebiliyor (hatta this referansını farklı bir şekilde kullanarak tanımlandığı sınıfın nesnesine doğrudan erişiyor).
Yerel sınıflar herhangi bir kod bloğunun içinde tanımlanıp aynı yerel değişken mantığında olduğu gibi yalnızca o kod bloğunda etkin oluyorlar.
İsimsiz sınıf ise isim verilmeden yerel olarak tanımlanan sınıflara deniyor. Bu tanım biraz garip oldu biraz daha açık söyleyecek olursak herhangi bir kod bloğunda bir arayüzü gerçekleştiren bir sınıf tanımını isimsiz olarak yapabiliyoruz. Kodla göstereyim. Şöyle bir arayüzümüz olsun.
interface A { public void doSomething(); }
Herhangi bir kod bloğunun içinde:
//... A a = new A() { Public void doSomething() { System.out.println(“I am doing something”); }}; //...
diyerek, A arayüzünü gerçekleştiren isimsiz bir sınıftan bir nesne yaratıp a nesnesine atamış olduk. Bu tarz kodlar GUI yazarken event handler’larda falan çok kullanılıyor görmüş olmanız kuvvetle muhtemel.
Güzel bir şey daha, normal sınıflar yalnızca public veya package-private olabiliyorken, dahili sınıflar public, protected, private, package-private yani tüm erişim belirteçlerine sahip olabiliyor.
Başlığa bak çay demle. İngilizcesini yazsam daha mı anlaşılır olur dedim bir an (???). Biliyodum ben bunu lazım oldu bi baktım unutmuşum. Sonra baktım hafızaya, denedim birkaç şey, çat buldum. Sonra buraya da yazayım dedim.
Java’da statik bir dahili sınıf kendisini kapsayan sınıfın herhangi bir üyesine erişim yapamazken, statik olmayan bir dahili sınıf kendisini kapsayan sınıfın public, protected, private, package-private tüm üyelerine doğrudan erişebiliyor. Bu gayet esnek ve bir çok açıdan güzel bir özellik. Kodu da şöyle oluyor hatta:
class A { private int outerMember; public class C { public void innerMethod() { A.this.outerMember = 5; } } }
Gördüğünüz gibi dahili sınıfın içinden kendisini kapsayan nesneye A.this diyerek doğrudan ulaştık. Niye lazım olsun ki bu dahili sınıflar ne saçma bir şey bu diyorsanız dahili sınıfların mantığı üzerine kısa bir yazı yazmak niyetindeyim beni takip edin anacım.
Bu ne arkadaş ya, salıncaklara sığmıyorum artık
Tamam bilgisayar başında otura otura kilo aldık ama bizim çocukluğumuzdaki salıncaklar bu kadar dar değildi ya. Ahşap olurdu, demir olurdu, geniş olurdu çılgınlar gibi binerdik
Şimdi hangi parka baksam salıncaklar plastik, insanın g.tünün bi yanağı bile zor sığıyor bırak sallanmayı
Hayır şimdiki nesil de fastfood nesli hepsi dibek gibi maşşallah onlar nasıl sığıp da sallanıyorlar?
Ubuntu’da CHM dosyalarını görüntülemek için Gnochm, ChmSee, XChm gibi programları kullanabilirsiniz. Ben ChmSee’yi kullanıyorum.
Kurmak için
sudo apt-get install chmsee
komutunu kullanmanız yeterli.
Ayrıca CHM dosyalarınızı PDF formatına chm2pdf konsol uygulamasını kullanarak dönüştürebilirsiniz. chm2pdf aracını
sudo apt-get install libchm-bin htmldoc python-chm chm2pdf
komutuyla indirebilirsiniz. Bu araç htmldoc, libchm gibi araçları kullandığından gerekli araçları temin etmeniz gerekiyor (üstteki komut).
Peki dönüştürme işlemini nasıl yapacağız? Varsayılan ayarlarda dönüştürme işlemini gerçekleştirmek için (ki çoğu durum için işinizi görür)
chm2pdf --webpage chm_dosyasi.chm
komutu yeterli. Kullanımına yönelik detaylı bilgi için her zamanki gibi
man chm2pdf