210 likes | 226 Views
Instance Method Review - CIS 1068 Program Design and Abstraction. Zhen Jiang CIS Dept. Temple University 1050 Wachman Hall, Main Campus Email: zhen.jiang@temple.edu. Table of Contents. Introduction Declaration and call Access and scope. Introduction. Why? Why loop Why array
E N D
Instance Method Review - CIS 1068 Program Design and Abstraction Zhen Jiang CIS Dept. Temple University 1050 Wachman Hall, Main Campus Email: zhen.jiang@temple.edu
Table of Contents • Introduction • Declaration and call • Access and scope
Introduction • Why? • Why loop • Why array • Why method • Why object (the host of instance method)?
Every thing under the control inside of object (which must be declared in the class, as a general template to cover all possible changes/statuses)
Dog class state: String name, breed int age behavior: writeOutput ( ) getAgeInHumanYears ( ) Dog object balto state:“Balto” (name) 8 (age) “Siberian Husky” (breed) behavior:getAgeInHumanYears ( ) writeOutput ( ) Dog object scooby state:“Balto” (name) 8 (age) “Siberian Husky” (breed) behavior:getAgeInHumanYears ( ) writeOutput ( )
Declaration and Call • No more static • How to use instance method m()? public class A { public void m() { … } }
public class B { public void m() { … } public void m3() { m() A a; //a.m is not supported A b = new A (); b.m(); } } public class A { public void m() { … } public void m2() { m(); } }
public class A { public void m() { … } public static void m2() { A a = new A(); a.m(); } }
For comparison public class B { public void m() { … } public void m3() { m() A.m(); } } public class A { public static void m() { … } public void m2() { m(); } }
For comparison public class B { public void m1(){ A a = new A(); a.m1(); A.m2();}public static void m2(){System.out.println("B's static m2"); B b2 = new B(); b2.m1();}public static void main(String args[]){ A a = new A(); B b = new B(); b.m1(); B.m2();} } public class A { public void m1(){System.out.println("A's m1"); m2();}public static void m2(){System.out.println("A's static m2");} } A's m1 A's static m2 A's static m2 B's static m2 A's m1 A's static m2 A's static m2
Constructor • Name • No return • Not static • Related to the use of new • Overloading
Mutator • Argument and parameter • Type (compatible & overloading) • Primitive type and reference type (array & object) • Accessor • Return • toString
Constructor public class B { public void m3() { A a = new A(); A b = new A(2); } } public class A { public A() { … } public A(int x) { … } }
Mutator and accessor public class B { public void m3() { A a = new A(); a.a(); a.A(); // but very confused! } } public class A { public A() { … } public void a() { … } public void A() { … } }
When an object is printed or concatenated with a String, Java calls the object's toString method. System.out.println("p1 is " + p1); is equivalent to: System.out.println("p1 is " + p1.toString()); Note: Every class has a toString method.
toString public class B { public void m3() { A a = new A(); System.out.println(a); } } public class A { private int x = 2; public A() { … } public String toString () { // no parameter! return “a” + x; } }
Access and Scope • Attribute (property, data field, etc) • What is “this” • Parameter
Attribute • what is this public class B { public void m3() { A a = new A(2); a.m(3); System.out.println(a); } } public class A { private int x; public A(int y) { x = y; } public void m(int x) { // int x; this.x = x; } public String toString(){ return x+””; } }
Parameter public class B { public void m3() { A a = new A(2); A b = new A(3); a.m(b); } } public class A { public int x; public A(int y) { x = y; } public void n() { // another method // other than m } public void m(A a) { // x and a.x // n(); and a.n(); } }
Parameter public class B { public void m3() { A a = new A(2); A b = new A(3); a.m(b); } } public class A { privateint x; public A(int y) { x = y; } public void n() { // another method // other than m } public intgetX(){ return x; } public void m(A a) { // x and a.getx() // n(); and a.n(); } }
ArrayOperation.java vs. ArrayOperations.java http://www.cis.temple.edu/~jiang/ArrayOperation.java http://www.cis.temple.edu/~jiang/ArrayOperations.java