Declarations and Access Control

OCP Java 6 Programmer sertifikası için hazırladığım notlar;

Chapter 1 : Declarations and Access Control

Identifiers

  • Değişken uzunluğu konusunda Java bize herhangi bir sınır getirmez.
  • Değişkenler ; harf , underscore(_) ve currency($) karekter ile başlayabilir.
  • Değişkenler sayı ile başlayamazlar. İlk karekter sonrasında sayı kullanılabilinir.
  • JavaBeans methodları camelCase yapısına uygun ve methodun amacına yönelik olmalıdır.
    set, get, is, add yada remove.

 

Declarations Rules

  • Bir source kod’da yanlız bir tane public class olmalıdır.
  • Public class ismi ile source kod ismi aynı olmalidir. Örn; public class Example{ … } ise dosyamızın adı da Example olmalıdır.
  • Bir source kod yanlız bir tane package ifadesine sahiptir. Birden fazla import ifadesi olabilir.
  • package ifadesi bir source kod’un ilk ifadesi olmalıdır. import ifadesi package ifadesinin altında ve sınıf tanımının üstünde olmalıdır.
  • Bir source kod içerisinde birden fazla nonpublic sınıf bulunabilir. nonpublic sınıflarda herhangi bir isim kısıtı yoktur.

 

Class Acces Modifiers

  • Java’da 3 acces modifiers ve 4 access level vardır.
  • Access modifiers : public, private ve protected.
  • Access level : public, private, default ve protected.
  • Java class’ı ancak public modifiers’a sahip olabilir. Yada herhangi bir modifiers tanımı yapılmaz ise default.
  • public bir sınıfa aynı ve farklı paketlerdeki tüm sınıflar ulaşabilir.
  • default access’e sahip bir Java sınıfına ancak aynı paket altındaki sınıflar tarafından ulaşılabilinir.
  • public access’e sahip bir Java sınıfı tüm paketler tarafından erişilebilinir ve kullanılabilinirdir.

 

Class Access Modifiers(NonAccess)

  • Sınıflar access modifiers dışında şunları da alabilir; final, abstract, strictfp.
  • Bir sınıf hem final hem abstract olamaz. Bu iki kelime asla yanyana gelemez.
  • abstract method private yada static de olamaz.
  • final tanımlanan bir class extends edilemez.
  • final değişkene tekrar değer atanamaz. final reference başka bir objeye yeniden referans olamaz.
  • abstract tanımlanan bir sınıfın nesneni oluşturulamaz.
  • Bir sınıf bir tane dahi abstract methoda sahipse sınıf tanımında da abstract kelimesi yer almalıdır.
  • abstract class’lar abstract(gövdesiz) ve abstract olmayan methodlara sahip olabilir.
  • Bir abstract classı extends eden sınıf gövdesiz methodları implemente(içini doldurma) etmek zorundadır.
  • Bir abstract class başka abstract class’ı extends ederse gövdesiz methodları implemente etmek opsiyoneldir.
    Kural şudur; Abstract bir sınıfı extends eden ilk somut sınıf(abstract olmayan) gövdesiz methodları(abstract methodları) implemente etmek zorundadır.

 

Interface Implementation

  • Interface bir kontrat gibi düşünülebilir.
  • Bir sınıfın ne yapacağını belirtir ama nasıl yapacağını söylemez.
  • Interface , kalıtım ağacına bakılmaksızın her sınıf  tarafından implement edebilir.
  • Interface, %100 abstract class’dır. Kapalı olarak methodların başına abstract kelimesini ekler.
  • Interface methodları varsayılan olarak public işaretlidir. Methodlar kapalı olarak public ve abstrac’tır.
  • Interface, sadece abstract methodlar(gövdesiz) içerir.
  •  Interface, değişkenden ziyade sabit ifadelere sahiptir. Interface değişkenlir kapalı olarak public static ve final’dır.

     
  • Interface değişkenleri tanımlarken public, static ve final kombinasyonu sırası önemsizdir.
  • Bir interface’yi implemente eden sınıflar interface methodlarının gövdesini doldurmalıdır.
  • İmplemente eden snıf eğer abstract ise methodların gövdesini doldurması opsiyoneldir.
  • Bir sınıf sadece tek bir sınıfı extends edebilirken birden fazla interface implemente edebilir.
    C++’daki çoklu kalıtımının Java’daki versyionu bu kabul edilebilinir.
  • Interface , başka bir yada daha fazla interface’yi extends edebilir.
  • Interface, bir sınıfı extends edemez yada başka bir interface implemente edemez.

 

Member Access Modifiers

  • Method ve instance(nonlocal) değişkenler member olarak adlandırılır.
  • Member, dört access level’a sahip olabilir; public, protected, private ve default.
  • Bir sınıfa ulaşılamıyorsa o sınıfın member’larına da ulaşılamaz.
  • Sınıf erişilebilinirliği , member erişilebilinirliğinden önce gelir.
  • public member’a her yerden ulaşılabilir.
  • this, hali hazırda üzerinde çalışılan objeye referanstır.
  • private member sadece aynı sınıf içerisinden ulaşılabilirdir.
  • private member, subclass’lar tarafından görülemez. private member inheritance dışındadır.
  • default ve protected member arasındaki fark kalıtımda ortaya çıkar.  default member sadece aynı paket içerisinden ulaşılabilir iken protected member buna ek olarak farklı paketler altından da ulaşılabilinir.
  • protected = package + kids(kids , subclass anlamındadır)

 

Local Variables

  • Local değişkenler access modifiers almazlar.
  • Local değişkenler sadece final alabilir.
  • Local değişkenlere default değer atanmaz, kullanılmadan önce initalize edilmesi gerekir.
  • Local değişkenler stack’de saklanır. Local değişken obje dahi olsa stack’dedir. Ama referans olunan alan heap’dedir.
  • Local değişkenlerin scope ayarı tanımlı olduklaro method ile sınırlıdır.
  • Local değişken ile instance değişken adı aynı olabilir. Buna shadowing denir.

 

Method with var-args

  • Java 5 ile gelen ek özelliklerden biridir.
  • Bir methodun 0 yada daha fazla parametre alabilmesidir.
  • doStuff(int …x) // int tipinde 0 yada daha fazla parametre gönderilebilinir.
  • Bir methodunda sadece tek bir tane var-args parametresi kullanılabilir.

 

Array Declarations

  • Array primitive yada object verileri tutabilir. Array’ın kendisi ise bir objectir.
  • Aynı tipteki verileri tutabilir. IS-A kuralına uyması şartıyla subclass tipindeki verileri de tutabilir.
  • primitive array diye birşey yoktur.
  • Array tanımı yaparken size vermek hatadır.

 

Static variable and Method

  • Static method ve değişkeler sınıf nesnesine ait değildirler.
  • Static memberlar , sınıf nesnelerinden bağımsızdır. Var olmak için nesneye ihtiyaç duyulmaz.
  • Static member’ların tek kopyası bulunur. Tüm instance’ler bu kopyayı kullanır.
  • Static method direkt olarak non-static member’a ulaşamaz.
  • Constructor, interface , inner class static method barındıramaz, local degişken static olamaz.

 

Enums

  • Özel olarak tanımlanan sabitlerdir. Java 5 de eklenmiştir.
  • Enum, String yada int tipi türünden değildir. Enum sabitleri özel olarak enum tipindedir.
  • Enum, sınıf içerisinde yada dışında tanımlanabilir. Method içerisinde tanımlanamaz.
  • Enum sınıf dışında tanımlandı ise şunları alamaz; static, final, abstract, private, protected.
  • Enum’un superclassi Enum<E> dir.
  • Enum şunlara sahiptir; contstructor, methods, variables.
  • Enum constructor’u parametre alabilir ve overloaded olabilir. Constructor public yada protected olamaz.
  • Enum bir class’ın member’ı olursa implicit olarak static olur.
  • Enum constructor’u asla direkt olarak çağrılamaz.
  • Enum sabitleri kapalı olarak final’dir.
  • Enum tanımı sonunda “;” koymak opsiyoneldir.

     

* Chapter  1 notlarım bu şekilde, faydalı olması dileğiyle.

* Mutlu kalın, Kod’la kalın ve bol bol Çay için .(Çay önemli)

~ Alican Akkus

1362 Total Views 1 Views Today