Static Inner Classes

Kategori: Java , 11 Temmuz 2019 , JanFranco


Bir önceki yazımızda statik olmayan iç sınıflardan bahsetmiştik. Bu yazımızda o sınıfları statik yaparsak ne olur onu göreceğiz. Önceki matematik sınıfını biraz değiştirelim:


import java.util.Scanner;

public class Mathematic {

	private static double PI = Math.PI;
	
	public static class Factorial{
		
		public static void factorial() {
		
			Scanner scanner = new Scanner(System.in);
			int mult = 1, num;
			num = scanner.nextInt();
			for(int i=num; i>0; i--) {
				mult *= i;
			}
			System.out.println(num + "!= " + mult);
			
		}
		
	}
	
	public static class Prime{
		
		public boolean check_prime(int num) {
			
			int i = 2;
			
			while(i < num) {
				if(num % 2 == 0) {
					return false;
				}
				i++;
			}
			
			return true;
			
		}
		
	}
	
	public static class Area{
		
		public class Circle{
			
			public void calculate_area(int radius) {
				
				System.out.println("Area of the circle = " + (2 * PI * radius));
				
			}
			
		}
		
	}
	
}
Faktoriyel sınıfını ve içindeki methodu statik hale getirdik. Asal sınıfını statik hale getirdik ancak methodu statik yapmadık. Aynı şekilde alan sınıfını da statik yaptık ancak iç sınıfını statik yapmadık. Bu sınıflardan obje oluşturalım:

import java.util.Scanner;

public class Main_class {

	public static void main(String args[]) {
		
		Mathematic.Factorial.factorial();
		Mathematic.Prime prime = new Mathematic.Prime();
		System.out.println(prime.check_prime(13));
		Mathematic.Area.Circle circle = new Mathematic.Area().new Circle();
		circle.calculate_area(12);
		
	}
	
}
Gördüğünüz gibi factorial methodunu obje oluşturmadan kullandık. prime objesini oluştururken matematik sınıfını yeniden oluşturmadık direk olarak Mathematic.Prime sınıfını kullanabildik. Aynı şeyler tabi ki Circle sınıfı için de geçerli. Çıktıyı görelim:

12
12!= 479001600
true
Area of the circle = 75.39822368615503


Sonraki Yazı: Local Inner Classes
Yorumlar

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