public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { <Details not shown.> } public ABC () {} public void update(int info, char moreInfo) { information = info; moreInformation = moreInfo; } public void output_info() { System.out.println(“information=” + information + “, moreInformation=“ + moreInformation); }}
public class Test{
public void main(){
ABC obj1 = new ABC (42, 'A'); ABC obj2 = new ABC ((int) 32.99, ‘B'); obj1.update (45, ‘A’);obj2.update (32, ‘B’);obj2 = obj1;obj1.output_info();obj2.output_info();
}}
What is the output?
information=45, moreInformation=Ainformation=45, moreInformation=A
public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { <Details not shown.> } public ABC () {} public void update(int info, char moreInfo) { information = info; moreInformation = moreInfo; } public void output_info() { System.out.println(“information=” + information + “, moreInformation=“ + moreInformation); }}
public class Test{
public void main(){
ABC obj1 = new ABC (42, 'A'); ABC obj2 = new ABC ((int) 32.99, ‘B'); obj1.update (45, ‘A’);obj2 = obj1;obj2.update (32, ‘B’);obj1.output_info();obj2.output_info();
}}
What is the output?
public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { <Details not shown.> } public ABC () {} public void update(int info, char moreInfo) { information = info; moreInformation = moreInfo; } public void output_info() { System.out.println(“information=” + information + “, moreInformation=“ + moreInformation); }}
public class Test{
public void main(){
ABC obj1 = new ABC (42, 'A'); ABC obj2 = new ABC ((int) 32.99, ‘B'); obj1.update (45, ‘A’);obj2 = obj1;obj2.update (32, ‘B’);obj1.output_info();obj2.output_info();
}}
What is the output?
information=32, moreInformation=Binformation=32, moreInformation=B
Why?
public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { <Details not shown.> } public ABC () {} public void update(int info, char moreInfo) { information = info; moreInformation = moreInfo; } public void output_info() { System.out.println(“information=” + information + “, moreInformation=“ + moreInformation); }}
public class Test{
public void main(){
ABC obj1 = new ABC (42, 'A'); ABC obj2 = new ABC ((int) 32.99, ‘B'); obj1.update (45, ‘A’);obj2 = obj1;obj2.update (32, ‘B’);obj1.output_info();obj2.output_info();
}}
What is the output?
information=32, moreInformation=Binformation=32, moreInformation=B
Why?Both obj1 and obj2 point to the same object!
public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { <Details not shown.> } public ABC () {} public void update(int info, char moreInfo) { information = info; moreInformation = moreInfo; } public void output_info() { System.out.println(“information=” + information + “, moreInformation=“ + moreInformation); }}
public class Test{
public void main(){
ABC obj1 = new ABC (42, 'A'); ABC obj2 = new ABC ((int) 32.99, ‘B'); obj2.update (32, ‘B’);ABC obj3 = obj2;obj3.update (40, ‘A’);obj1.output_info();obj2.output_info();
}}
What is the output?
public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { <Details not shown.> } public ABC () {} public void update(int info, char moreInfo) { information = info; moreInformation = moreInfo; } public void output_info() { System.out.println(“information=” + information + “, moreInformation=“ + moreInformation); }}
public class Test{
public void main(){
ABC obj1 = new ABC (42, 'A'); ABC obj2 = new ABC ((int) 32.99, ‘B'); obj2.update (32, ‘B’);ABC obj3 = obj2;obj3.update (40, ‘A’);obj1.output_info();obj2.output_info();
}}
What is the output?
information=42, moreInformation=Ainformation=40, moreInformation=A
public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { <Details not shown.> } public ABC () {} public void update(int info, char moreInfo) { information = info; moreInformation = moreInfo; } public void output_info() { System.out.println(“information=” + information + “, moreInformation=“ + moreInformation); }}
public class Test{
public void main(){
ABC obj1 = new ABC (42, 'A'); ABC obj2 = new ABC ((int) 32.99, ‘B'); changer (obj2);obj1.output_info();obj2.output_info();
}public void changer(ABC obj){ obj.update (100, ‘A’); obj = new ABC (); obj.update (30, ‘C’);}
}
What is the output?
public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { <Details not shown.> } public ABC () {} public void update(int info, char moreInfo) { information = info; moreInformation = moreInfo; } public void output_info() { System.out.println(“information=” + information + “, moreInformation=“ + moreInformation); }}
public class Test{
public void main(){
ABC obj1 = new ABC (42, 'A'); ABC obj2 = new ABC ((int) 32.99, ‘B'); changer (obj2);obj1.output_info();obj2.output_info();
}public void changer(ABC obj){ obj.update (100, ‘A’); obj = new ABC (); obj.update (30, ‘C’);}
}
What is the output?
information=42, moreInformation=Ainformation=100, moreInformation=A
public class Money { private int dollar = 0; private int cent = 0; public Money() {} public Money(int in_d, int in_c) { dollar = in_d; cent = in_c; } }
public class Test{
public void main(){
Money m1 = new ();Money m2 = new (100, 2);System.out.println(“The balance of m1 is: “+ m1);System.out.println(“The balance of m2 is: “+ m2);if (m1 == m2) System.out.println(“equal.”);else System.out.println(“not-equal.”);
}}
What is the issue?
public class Money { private int dollar = 0; private int cent = 0; public Money() {} public Money(int in_d, int in_c) { dollar = in_d; cent = in_c; } }
public class Test{
public void main(){
Money m1 = new ();Money m2 = new (100, 2);System.out.println(“The balance of m1 is: “+ m1);System.out.println(“The balance of m2 is: “+ m2);if (m1 == m2) System.out.println(“equal.”);else System.out.println(“not-equal.”);
}}
What is the issue?
need to override the equals and toString methods!
public class Money { private int dollar = 0; private int cent = 0; public Money() {} public Money(int in_d, int in_c) { dollar = in_d; cent = in_c; }
public String toString() { return (dollar + “.” + cent);} public boolean equals(Money other_m) { return (dollar == other_m.dollar && cent == other_m.cent); } }
public class Test{
public void main(){
Money m1 = new ();Money m2 = new (100, 2);System.out.println(“The balance of m1 is: “+ m1);System.out.println(“The balance of m2 is: “+ m2);if (m1.equals(m2)) System.out.println(“equal.”);else System.out.println(“not-equal.”);
}}
What is the issue?
need to override the equals and toString methods!
public class Money { private static int num_accounts = 0; private int dollar = 0; private int cent = 0; public Money() {num_accounts ++;}
public Money(int in_d, int in_c) { dollar = in_d; cent = in_c; num_accounts ++;}
public String toString() { return (dollar + “.” + cent);}
public boolean equals(Money other_m) { return (dollar == other_m.dollar && cent == other_m.cent); }
public void setDollar(int in_d) { dollar = in_d; }
public void setCent (int in_c) { cent = in_c; }
public static void setMoney(int in_d, int in_c) { setDollar(in_d); setCent(in_c); }
public static void getDollar() { return dollar; }
public static void getCent() { return cent;}
public static void output_balance() { System.out.println(“Your balance is :” + getDollar() + getCent();}
public static void resetCounter() { num_accounts = 0; }}
What is the issue?
public class Money { private static int num_accounts = 0; private int dollar = 0; private int cent = 0; public Money() {num_accounts ++;}
public Money(int in_d, int in_c) { dollar = in_d; cent = in_c; num_accounts ++;}
public String toString() { return (dollar + “.” + cent);}
public boolean equals(Money other_m) { return (dollar == other_m.dollar && cent == other_m.cent); }
public void setDollar(int in_d) { dollar = in_d; }
public void setCent (int in_c) { cent = in_c; }
public static void setMoney(int in_d, int in_c) { setDollar(in_d); setCent(in_c); }
public static void getDollar() { return dollar; }
public static void getCent() { return cent;}
public static void output_balance() { System.out.println(“Your balance is :” + getDollar() + getCent();}
public static void resetCounter() { num_accounts = 0; }}
What is the issue?
static functions cannot access non-static members!!
public class Money { private static int num_accounts = 0; private int dollar = 0; private int cent = 0; public Money() {num_accounts ++;}
public Money(int in_d, int in_c) { dollar = in_d; cent = in_c; num_accounts ++;}
public String toString() { return (dollar + “.” + cent);}
public boolean equals(Money other_m) { return (dollar == other_m.dollar && cent == other_m.cent); }
public void setDollar(int in_d) { dollar = in_d; }
public void setCent (int in_c) { cent = in_c; }
public void setMoney(int in_d, int in_c) { setDollar(in_d); setCent(in_c); }
public void getDollar() { return dollar; }
public void getCent() { return cent;}
public void output_balance() { System.out.println(“Your balance is :” + getDollar() + getCent();}
public static void resetCounter() { num_accounts = 0; }}
public class A { public A() {} public void method1() {} public void method2() {} private final A method3() { return A(); }}
What is the issue?
public class B : public A { public B() {} private void method1() {} public boolean method2(int ii) { return false; } public B method3() { return B(); }}
public class A { public A() {} public void method1() {} public void method2() {} private final A method3() { return A(); }}
What is the issue?
public class B : public A { public B() {} private void method1() {} public boolean method2(int ii) { return false; } public B method3() { return B(); }}
public class A { public A() {} public void method1() {} public void method2() {} private final A method3() { return new A(); }}
What is the issue?
public class B extends A { public B() {} public void method1() {} public boolean method2(int ii) { return false; }}
public class A { private int val1 = 0; public A() {} public void method1() {} public void method2() {} private A method3() { return new A(); }}
What is the issue?
public class B extends A { public B() {} public void method1() {} public boolean method2(int ii) { val1 ++; return false; } public B method3() { return new B(); }}
public Test{ public void static main() { A obj1 = new A(); B obj2 = new B(); obj1.method1(); A obj3 = obj1.method3(); obj1 = obj2.method3(); }}
public class A { private int val1 = 0; public A() {} public void method1() {} public void method2() {} private A method3() { return new A(); }}
What is the issue?
public class B extends A { public B() {} public void method1() {} public boolean method2(int ii) { val1 ++; return false; } public B method3() { return new B(); }}
public Test{ public void static main() { A obj1 = new A(); B obj2 = new B(); obj1.method1(); A obj3 = obj1.method3(); obj1 = obj2.method3(); }}
public class Base{
private int x, y = 0;public Base(int x_val, int y_val){ x = x_val; y = y_val;}public Base(int x_val){ x = x_val; }……
}
public class Derived extends Base{
private double x, y = 0;public Derived(){ super(0.); this (0.0, 1.0);}public Derived(double x_val, double y_val){ x = x_val; y = y_val;}……
}
What is the issue?
public class Base{
private int x, y = 0;public Base(int x_val, int y_val){ x = x_val; y = y_val;}public Base(int x_val){ x = x_val; }……
}
public class Derived extends Base{
private double x, y = 0;public Derived(){ super(0.); this (0.0, 1.0);}public Derived(double x_val, double y_val){ x = x_val; y = y_val;}……
}
What is the issue?
public class Base{
private int x, y = 0;public Base(int x_val, int y_val){ x = x_val; y = y_val;}public Base(int x_val){ x = x_val; }……
}
public class Derived extends Base{
private double x, y = 0;public Derived(){ this (0.0, 1.0);}public Derived(double x_val, double y_val){ super (x_val, y_val); x = x_val; y = y_val;}……
}
What is the issue?
public class Base{
private int x, y = 0;public Base(int x_val, int y_val){ x = x_val; y = y_val;}public Base(int x_val){ x = x_val; }……
}
public class Derived extends Base{
private double x, y = 0;public Derived(){ this (0.0, 1.0);}public Derived(double x_val, double y_val){ super ((int) x_val, (int) y_val); x = x_val; y = y_val;}……
}
What is the issue?
public class Base{
private int x, y = 0;public Base(int x_val, int y_val){ x = x_val; y = y_val;}public Base(int x_val){ x = x_val; }public Base() {}……
}
public class Derived extends Base{
private double x, y = 0;public Derived(){ this (0.0, 1.0);}public Derived(double x_val, double y_val){ super(); super ((int) x_val, (int) y_val); x = x_val; y = y_val;}……
}
How about this?
public class Base{
private int x, y = 0;public Base(int x_val, int y_val){ x = x_val; y = y_val;}public Base(int x_val){ x = x_val; }public Base() {}……
}
public class Derived extends Base{
private double x, y = 0;public Derived(){ this (0.0, 1.0);}public Derived(double x_val, double y_val){ super(); super ((int) x_val, (int) y_val); x = x_val; y = y_val;}……
}
How about this?
There can have only one super!