Public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC (...

25
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=A information=45, moreInformation=A

Transcript of Public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC (...

Page 1: Public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { } public ABC () {} public.

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

Page 2: Public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { } public ABC () {} public.

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?

Page 3: Public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { } public ABC () {} public.

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?

Page 4: Public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { } public ABC () {} public.

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!

Page 5: Public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { } public ABC () {} public.

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?

Page 6: Public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { } public ABC () {} public.

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

Page 7: Public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { } public ABC () {} public.

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?

Page 8: Public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { } public ABC () {} public.

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

Page 9: Public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { } public ABC () {} public.

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?

Page 10: Public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { } public ABC () {} public.

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!

Page 11: Public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { } public ABC () {} public.

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!

Page 12: Public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { } public ABC () {} public.

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?

Page 13: Public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { } public ABC () {} public.

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!!

Page 14: Public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { } public ABC () {} public.

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; }}

Page 15: Public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { } public ABC () {} public.

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(); }}

Page 16: Public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { } public ABC () {} public.

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(); }}

Page 17: Public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { } public ABC () {} public.

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; }}

Page 18: Public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { } public ABC () {} public.

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(); }}

Page 19: Public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { } public ABC () {} public.

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(); }}

Page 20: Public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { } public ABC () {} public.

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?

Page 21: Public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { } public ABC () {} public.

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?

Page 22: Public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { } public ABC () {} public.

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?

Page 23: Public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { } public ABC () {} public.

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?

Page 24: Public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { } public ABC () {} public.

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?

Page 25: Public class ABC { private int information = 0; private char moreInformation = ‘ ‘; public ABC ( int newInfo, char moreNewInfo) { } public ABC () {} public.

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!