/**
 * <p>
 * Method Inlining Example
 * </p>
 * 
 * @author Jang, Sun-Jin (jangsunjin@softwareinlife.com)
 * @version 1.0
 * @since 1.5.06
 * @date 2008. 12. 23.
 *
 */
public class MethodInliningExample {

	/**
	 * Constructor 
	 */
	public MethodInliningExample() {
		
	}

	/**
	 * Main Method
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		// Test A class
		A a = new A();
		int numByA = a.foo();
		System.out.println("a.foo() is " + numByA);
		
		System.out.println("-----------------------");
		
		// Test B class
		B b = new B();
		int numByB = b.foo();
		System.out.println("b.foo() is " + numByB);
		
		System.out.println("-----------------------");
		
		// Test C class
		C c = new C();
		int numByC = c.foo();
		System.out.println("c.foo() is " + numByC);
	
		System.out.println("-----------------------");
		
		// Test B class from C class
		B bc = new C();
		int numByBC = bc.foo();
		System.out.println("bc.foo() is " + numByBC);		
		
		System.out.println("-----------------------");
		
		// Test converted B class from C class
		B bc2 = (B) c;
		int numByBC2 = bc2.foo();
		System.out.println("bc2.foo() is " + numByBC2);
	}
}
