POLYMORPHISM Chapter 9 Inheritance and Interfaces (javaJ 2. Assuming the followi
ID: 3878432 • Letter: P
Question
POLYMORPHISM Chapter 9 Inheritance and Interfaces
(javaJ
2. Assuming the following classes have been defined:
public class Harry {
public void method1() {
System.out.println("harry 1");
}
public void method2() {
method1();
System.out.println("harry 2");
}
}
public class Larry extends Harry {
public void method1() {
System.out.println("larry 1");
super.method1();
}
}
public class Mary extends Larry {
public void method2() {
System.out.println("mary 2");
}
public void method3() {
super.method1();
System.out.println("mary 3");
}
}
public class Jerry extends Mary {
public void method2() {
super.method2();
System.out.println("jerry 2");
}
}
And that the following variables have been defined:
Harry var1 = new Harry();
Harry var2 = new Larry();
Larry var3 = new Jerry();
Mary var4 = new Mary();
Mary var5 = new Jerry();
Object var6 = new Larry();
What is the output produced by each statement below? If the statement produces more than one line of output, indicate the line breaks with slashes as in "a/b/c". If the statement causes an error, write either "compiler error" or "runtime error" as appropriate and explain the reason to have an error in a comment line. Comment out any statements that cause a compile or runtime error so that you can run the whole program and include that corrected program in your response as well please.
Statement:
var1.method1();
var2.method1();
var3.method1();
var4.method1();
var5.method1();
var6.method1();
var1.method2();
var2.method2();
var3.method2();
var4.method2();
var5.method2();
var6.method2();
var3.method3();
var5.method3();
((Larry)var1).method1();
((Mary)var2).method2();
((Jerry)var5).method1();
((Mary)var3).method3();
((Jerry)var4).method3();
((Mary)var6).method3();
Explanation / Answer
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Surya
*/
public class ex {
ex()
{
Harry var1 = new Harry();
Harry var2 = new Larry();
Larry var3 = new Jerry();
Mary var4 = new Mary();
Mary var5 = new Jerry();
Object var6 = new Larry();
var1.method1();//output harry 1
var2.method1();//output a/larry 1 b/harry 1
var3.method1();//output a/larry 1 b/harry 1
var4.method1();//output a/larry 1 b/harry 1
var5.method1();//output a/larry 1 b/harry 1
//var6.method1();//compile error... method not found
var1.method2();//output a/harry 1 b/harry 2
var2.method2();//output a/larry 1 b/harry 1 c/harry
var3.method2();//output a/mary 2 b/jerry 2
var4.method2();//output mary2
var5.method2();//output a/mary2 b/jerry 2
//var6.method2();// compiler errror method not found
//var3.method3();//compiler error...type difference
var5.method3();//outpt a/larry 1 b/harry 1 c/mary 3
//((Larry)var1).method1(); //run time error
//((Mary)var2).method2(); //run time error
((Jerry)var5).method1();//output a/larry 1 b/harry 1
((Mary)var3).method3();//output a/larry 1 b/harry 1
//((Jerry)var4).method3(); runtime errors
//((Mary)var6).method3(); runtime errors
}
public class Harry {
public void method1() {
System.out.println("harry 1");
}
public void method2() {
method1();
System.out.println("harry 2");
}
}
public class Larry extends Harry {
public void method1() {
System.out.println("larry 1");
super.method1();
}
}
public class Mary extends Larry {
public void method2() {
System.out.println("mary 2");
}
public void method3() {
super.method1();
System.out.println("mary 3");
}
}
public class Jerry extends Mary {
public void method2() {
super.method2();
System.out.println("jerry 2");
}
}
public static void main(String argv[])
{
new ex();
}
}
output/:
run:
harry 1
larry 1
harry 1
larry 1
harry 1
larry 1
harry 1
larry 1
harry 1
harry 1
harry 2
larry 1
harry 1
harry 2
mary 2
jerry 2
mary 2
mary 2
jerry 2
larry 1
harry 1
mary 3
larry 1
harry 1
larry 1
harry 1
mary 3
BUILD SUCCESSFUL (total time: 0 seconds)
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.