Pure Java – 80 Nested Class – Nested Interface

Merhaba Arkadaslar,
Onceki bolumde Inner Class konusunu incelemistik. Bu bolumde Nested Interface(Inner Interface) konusuu inceleyecegiz. Hatirlayacagimiz gibi Inner Class’lar , Nested Class’larin bir alt koludur. Non-static Nested Class’lara , Inner Class denilmektedir. Nested Interface’lerin sadece static versiyonu oldugu icin Nested Interface ve Inner Interface ayni anlama gelmektedir.

Nested Interface
Java’da Nested Class yapisi oldugu gibi Nested Interface yapisi da mevcuttur. Inner interface , Nested Interface ile ayni anlama gelmektedir. Bir sinif veya bir interface icerisinde tanimli interface’e , Nested Interface(Inner Interface) denilir.

  • Nested Interface’ler private ya da protected anahtar kelimesini alamazlar. Nested Interface’ler varsayilan olarak public tir.
  • Hatirlayacagimiz gibi Interface’lerin metotlari varsayilan olarak public abstract olarak tanimlidir. Benzer sekilde nested interface’lerin metotlarida varsayilan olarak public ve abstract tir. private ya da protected tanimlanamaz.
  • Benzer sekilde degiskenler interface ve Nested Interface’lerin degiskenleri public , final ve static’tir yani Constant(sabittir)
  • Nested Interface’ler varsayilan olarak static tir.
public interface OuterNestedInterface {

	// private interface PrivateNestedInterFace { } //derleme hatasi.

	interface PublicNestedInterface {
		// private void privateNestedMethod(); //derleme hatasi
		public abstract void testMethod();
	}

	// nested interface varsayilan olarak public ve static'tir
	public static interface PublicStaticNestedInterface {
		// private int test = 2014; // private tanimlanamaz.
		public static final int fps = 2014;

	}
}

Nested Interface’si uyguladigimiz(implements) bir ornek yapalim.

  • Dikkat ederseniz Nested Interface’si uyguladigimizda sadece Nested Interface’te bulunan metodu override etmemiz gerekir. Outer interface’te bulunan metodu override etmemiz gerekmez.
  • Benzer sekilde Outer interface’si uyguladigimizda(implements) sadece Outer interface’te bulunan metotlari override etmemiz gerekir. Nested Interface’te bulunan metodu override etmemiz gerekmez.
  • Unutmayalim Java da birden fazla arabirimi/interface uygulayabiliriz.
interface OuterNestedInterface {

	public abstract void outerMethod();

	public interface PublicNestedInterface {
		public abstract void innerMethod();
	}
}

public class OuterNestedTest implements OuterNestedInterface.PublicNestedInterface {

	@Override
	public void innerMethod() {
		System.out.println("test");
	}

}

class Outer2 implements OuterNestedInterface {

	@Override
	public void outerMethod() {
		// TODO Auto-generated method stub
	}

}

class Outer3 implements OuterNestedInterface, OuterNestedInterface.PublicNestedInterface {

	@Override
	public void outerMethod() {
	}

	@Override
	public void innerMethod() {
	}
}

Outer class icerisinde Nested Interface tanimlayabiliriz ;

import chap2.OuterClassNestedInterface.NestedInterface;

public class OuterClassNestedInterface {
	interface NestedInterface {
		void nestedMethod();
	}
}

class OuterClass implements NestedInterface {

	@Override
	public void nestedMethod() {

	}

}

class OuterClass2 implements OuterClassNestedInterface.NestedInterface {

	@Override
	public void nestedMethod() {

	}

}

interface OuterInterface extends NestedInterface {

}

Yazimi burada sonlandiriyorum.
Herkese Bol Javali Gunler dilerim.
Be an oracle man , import java.*;
Levent Erguder
OCP, Java SE 6 Programmer
OCE, Java EE 6 Web Component Developer

Print Friendly, PDF & Email

Leave a Reply

Your email address will not be published. Required fields are marked *