Anonymous Inner Classes, abstract Keyword

Kategori: Java , 11 Temmuz 2019 , JanFranco


Anonymous inner classlar aslında inner classlara benzer. Fakat bu classların herhangi bir isimleri yoktur ve sadece 1 obje için iş görür. Genelde bir interface veya sınıftan method override edileceği zaman kullanılır. Override edilen method sadece anonymous inner class sahibi obje için çalışacaktır. Anonymous kimliği belirsiz, abstract ise soyut anlamına gelmektedir. Eğer bir sınıf abstract anahtar kelimesi ile oluşturulmuşsa bu sınıfta abstract bir method tanımlayabiliriz demektir. Abstract methodlar fonksiyon prototipleridir ve obje oluşturulduğu anda fonksiyonun içeriği yazılmalıdır:


public class Main_class {
	
	public interface IStudent{
		
		void study();
		void attend_lecture();
		
	}

	public static abstract class ARegister {
		
		private String name, surname;
		private int num;
		
		public ARegister(int num, String name, String surname) {
			this.name = name;
			this.surname = surname;
			this.num = num;
		}
		
		public void register() {
			System.out.println("Registered...");
		}
		
		abstract void check();
		
	}
	
	public static void main(String args[]) {
		
		IStudent student = new IStudent() {
			
			@Override
			public void study() {
				System.out.println("I am studying now.");
			}
			
			@Override
			public void attend_lecture() {
				System.out.println("I will attend the lecture.");
			}
		};
		
		student.study();
		student.attend_lecture();
		
		ARegister register = new ARegister(12345, "Jan", "Franco") {
			
			@Override
			void check() {
				System.out.println("Checking...");
			}
		};
		
		register.register();
		register.check();
			
	}
	
}
Burada IStudent adında bir inner interface tanımladık. Bu interfaceden obje üretildiğinde otomatik olarak methodlar override edilir ve içeriğinin yazılması beklenir. Bu obje bir anonymous yani kimliği belirsiz objedir. IStudent dışında bir de ARegister adında abstract bir sınıf tanımladık. Bu abstract sınıfın, abstract method dışında normal sınıflardan çok bir farkı yoktur. Ancak abstract bir method tanımlandığından, bu sınıftan obje üretildiğinde otomatik olarak o method override edilir ve içeriğinin doldurulması beklenir. Konsol:

I am studying now.
I will attend the lecture.
Registered...
Checking...


Sonraki Yazı: Generic Class
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın