package oop.AnonymousInnerClass;

public class Konstruktor {
	
	public Konstruktor() {
		System.out.println("das ist Konstruktor");
	}
	
	// Methode enthält Anonymous Inner Class
	public static void main() {
		new Konstruktor() {
			
			public static void print() {
				System.out.println("main methode");
			}
			
			int x = 5;
			@Override
			public void testMethod() {
				
				System.out.println("main methode");
			
			}
			
			
		};
	}
	
	public void testMethod() {
		
		System.out.println("Das ist in der klasse");
	}
	
	
	 int x = 2;
	
	public static void main(String[] str) {
		
		// Konstruktor wird aufgerufen und aussgegeben
		Konstruktor test  = new Konstruktor() {
			
			public void print() {
				System.out.println("extra methode");
				//x = 3; Änderung ist verboten
			}
			
			int x = 5;
			@Override
			public void testMethod() {
				
				System.out.println("Das ist in der main" + x);
				print();// innere Methode
			}
			
			
		};
		
		test.testMethod();
		
		// Konstruktor wird aufgerufen und aussgegeben
				var test2  = new Konstruktor() {
					
					public static void print() {
						System.out.println("extra methode");
					}
					
					int x = 5;
					@Override
					public void testMethod() {
						
						System.out.println("Das ist in der main" + x);
					
					}
					
					
				};
				// aufruf der innere methode
				//test2.print();
				test2.main();
		
	}

}
