Q.1
Determine output:
class A{
      public void printName(){
            System.out.println("Name-A");
      }
}
class B extends A{
      public void printName(){
            System.out.println("Name-B");
      }
}
class C extends A{
      public void printName(){
            System.out.println("Name-C");
      }
}

1. public class Test{
2.       public static void main (String[] args){
3.             B b = new B();
4.             C c = new C();
5.             b = c;
6.             newPrint(b);
7.       }
8.       public static void newPrint(A a){
9.             a.printName();
10.      }
11. }
Q.2
What is the output for the below code ?
class A{
      private void printName(){
            System.out.println("Value-A");
      }
}
class B extends A{
      public void printName(){
            System.out.println("Name-B");
      }
}
public class Test{
      public static void main (String[] args){
            B b = new B();
            b.printName();
      }
}
Q.3
What will be the result of compiling and running the given code?
class A{
      int b=10;
      private A(){
            this.b=7;
      }
      int f(){
            return b;
      }
}
class B extends A{
      int b;
}
public class Test{
      public static void main(String[] args){
            A a = new B();
            System.out.println(a.f());
      }
}
Q.4
What will be the result of compiling and executing the following program code?
class Vehicle{
      public void printSound(){
            System.out.print("vehicle");
      }
}
class Car extends Vehicle{
      public void printSound(){
            System.out.print("car");
      }
}
class Bike extends Vehicle{
      public void printSound(){
            System.out.print("bike");
      }
}
public class Test{
      public static void main(String[] args){
            Vehicle v = new Car();
            Bike b = (Bike) v;
        
            v.printSound();
            b.printSound();
      }
}
Q.5
What will be the output?
class One{
      final int a = 15;
}

class Two extends One{
      final int a = 20;
}

public class Test extends Two{
      final int a = 30;

      public static void main(String args[]){
            Test t = new One();
            System.out.print(t.a);
      }
}
Q.6
Determine output:
class Small{
      public Small(){
            System.out.print("a ");
      }
}
class Small2  extends Small{
      public Small2(){
            System.out.print("b ");
      }
}
class Small3 extends Small2{
      public Small3(){
            System.out.print("c ");
      }
}
public class Test{     
      public static void main(String args[]){
            new Small3();
      }
}
Q.7
What will be the output?
class A{
      int i = 10;
      public void printValue(){
            System.out.print("Value-A");
      }
}

class B extends A{
      int i = 12;
      public void printValue(){
            System.out.print("Value-B");
      }
}

public class Test{
      public static void main(String args[]){
            A a = new B();
            a.printValue();
            System.out.print(a.i);
      }
}
Q.8
What will be the result after compiling this code?
class SuperClass{
      public int doIt(String str, Integer... data)throws Exception{
            String signature = "(String, Integer[])";
            System.out.println(str + " " + signature);
            return 1;
      }
}

public class Test extends SuperClass{
      public int doIt(String str, Integer... data){
            String signature = "(String, Integer[])";
            System.out.println("Overridden: " + str + " " +signature);
            return 0;
      }

      public static void main(String... args){
            SuperClass sb = new Test();
            sb.doIt("hello", 3);
      }
}
Q.9
class A{
      A(String s){}

      A(){}
}

1. class B extends A{
2.       B(){}
3.       B(String s){
4.             super(s);
5.       }
6.       void test(){
7.             // insert code here
8.       }
9. }
Which of the below code can be insert at line 7 to make clean compilation ?
Q.10
Determine output:
class A{
      public void printValue(){
            System.out.println("Value-A");
      }
}
class B extends A{
      public void printNameB(){
            System.out.println("Name-B");
      }
}
class C extends A{
      public void printNameC(){
            System.out.println("Name-C");
      }
}

1. public class Test{
2.       public static void main (String[] args){
3.             B b = new B();
4.             C c = new C();
5.             newPrint(b);
6.             newPrint(c);
7.       }
8.       public static void newPrint(A a){
9.             a.printValue();
10.      }
11. }
Q.11
What will be the output?
interface A{
	public void method1();
}
class One implements A{
	public void method1(){
		System.out.println("Class One method1");
	}
}
class Two extends One{
	public void method1(){
		System.out.println("Class Two method1");
	}
}
public class Test extends Two{
	public static void main(String[] args){
		A a = new Two();
		a.method1();
	}
}
Q.12
What is the result of compiling and running this program?
class Mammal{
      void eat(Mammal m){
            System.out.println("Mammal eats food");
      }
}
class Cattle extends Mammal{
      void eat(Cattle c){
            System.out.println("Cattle eats hay");
      }
}
class Horse extends Cattle{
      void eat(Horse h){
            System.out.println("Horse eats hay");
      }
}
public class Test{
      public static void main(String[] args){
            Mammal h = new Horse();
            Cattle c = new Horse();
            c.eat(h);
      }
}
Q.13
Determine output:
class A{
	public void method1(){
		System.out.print("Class A method1");
	}
}
class B extends A{
	public void method2(){
		System.out.print("Class B method2");
	}
}
class C extends B{
	public void method2(){
		System.out.print("Class C method2");
	}	
	public void method3(){
		System.out.print("Class C method3");
	}
}
public class Test{
	public static void main(String args[]){
		A a = new A();
		C c = new C();		
		c.method2();
		a = c;
		a.method3();
	}
}
Q.14
What will be printed after executing following program code?
class Base{
	int value = 0;
        Base(){
        	addValue();
        }
        void addValue(){
        	value += 10;
        }
        int getValue(){
        	return value;
        }
}
class Derived extends Base{
	Derived(){
		addValue();
	}
	void addValue(){
		value +=  20;
	}
}
public class Test{
	public static void main(String[] args){
		Base b = new Derived();
		System.out.println(b.getValue());
	}
}
Q.15
What will be the output?
class Parent{
      public void method(){
            System.out.println("Hi i am parent");
      }
}
public class Child extends Parent{
      protected void method(){
            System.out.println("Hi i am Child");
      }
      public static void main(String args[]){
            Child child = new Child();
            child.method();
      }
}
0 h : 0 m : 1 s