package mariaJava;

public class InAction_Intro14 {
	
	public void allInAction14() {
		System.out.println("Testing default methods");
		
		BaseClassIface baseClass = new BaseClass();
		int old = baseClass.oldBaseClassMethod();
		System.out.println("Old method: " + old);
		
		int newJava7 = baseClass.newJava7BaseClassMethod();
		System.out.println("New Java 7 method: " + newJava7);
		
		int newJava8 = baseClass.newJava8BaseClassMethod();
		System.out.println("New default method (overridden): " + newJava8);
	}
	
	interface BaseClassIface {
		int oldBaseClassMethod();
		int newJava7BaseClassMethod();
		default int newJava8BaseClassMethod() {
			return 2;
		}
	}
	
	class BaseClass implements BaseClassIface {
		public int oldBaseClassMethod() {
			return 1;
		}

		@Override
		public int newJava7BaseClassMethod() {
			// TODO Auto-generated method stub
			return 0;
		}
		
		//Not necessary, but possible:
		@Override
		public int newJava8BaseClassMethod() {
			return 3;
		}
	}

}
