SOMEDAY/JAVA
[JAVA] 객체지향 프로그래밍 4~6 class instance static
아이엠제니
2022. 2. 8. 07:10

부스트코스 생활코딩 [쉽게 배우는 자바2] 공부 기록
4-1 클래스 (존재 이유와 기본형식)
package javaChapter2_10;
class Print {
public static String delimiter = "";
public static void A() {
System.out.println(delimiter);
System.out.println("A");
System.out.println("A");
}
public static void B() {
System.out.println(delimiter);
System.out.println("B");
System.out.println("B");
}
}
public class MyOOP {
public static void main(String[] args) {
Print.delimiter = "----";
Print.A();
Print.A();
Print.B();
Print.B();
Print.delimiter = "****";
Print.A();
Print.A();
Print.B();
Print.B();
}
}

4-2 클래스 (형식)
package javaChapter2_10;
public class MyOOP {
public static void main(String[] args) {
Print.delimiter = "----";
Print.A();
Print.A();
Print.B();
Print.B();
Print.delimiter = "****";
Print.A();
Print.A();
Print.B();
Print.B();
}
}
package javaChapter2_10;
public class Print {
public static String delimiter = "";
public static void A() {
System.out.println(delimiter);
System.out.println("A");
System.out.println("A");
}
public static void B() {
System.out.println(delimiter);
System.out.println("B");
System.out.println("B");
}
}
한 페이지에 길게 작성되어 있던 코드를, 다른 클래스를 새롭게 만들어 분리한다!
관리가 더 용이할 듯?
5. 인스턴스
Before

After

코드를 간소화하고, 중복 제거
package javaChapter2_10;
public class MyOOP {
public static void main(String[] args) {
Print p1 = new Print();
p1.delimiter = "----";
p1.A();
p1.A();
p1.B();
p1.B();
Print p2 = new Print();
p2.delimiter = "****";
p2.A();
p2.A();
p2.B();
p2.B();
p1.A();
p2.A();
p1.A();
p2.A();
}
}
package javaChapter2_10;
class Print {
public String delimiter = "";
public void A() {
System.out.println(delimiter);
System.out.println("A");
System.out.println("A");
}
public void B() {
System.out.println(delimiter);
System.out.println("B");
System.out.println("B");
}
}
6. static

package javaChapter2_10;
class Foo {
public static String classVar = "i class var";
public String instanceVar = "I instance var";
}
public class StaticApp {
public static void main(String[] args) {
System.out.println(Foo.classVar); // OK
// System.out.println(Foo.instanceVar); // Error
}
}

package javaChapter2_10;
class Foo {
public static String classVar = "i class var";
public String instanceVar = "I instance var";
public static void classMethod() {
System.out.println(classVar); // OK
// System.out.println(instanceVar); // Error
}
public void instanceMethod() {
System.out.println(classVar); // OK
System.out.println(instanceVar); // OK
}
}
public class StaticApp {
public static void main(String[] args) {
System.out.println(Foo.classVar); // OK
// System.out.println(Foo.instanceVar); // Error
Foo.classMethod();
// Foo.instanceMethod(); // Error
Foo f1 = new Foo();
f1.instanceMethod();
}
}


package javaChapter2_10;
class Foo {
public static String classVar = "I class var";
public String instanceVar = "I instance var";
public static void classMethod() {
System.out.println(classVar); // OK
// System.out.println(instanceVar); // Error
}
public void instanceMethod() {
System.out.println(classVar); // OK
System.out.println(instanceVar); // OK
}
}
public class StaticApp {
public static void main(String[] args) {
System.out.println(Foo.classVar); // OK
// System.out.println(Foo.instanceVar); // Error
Foo.classMethod();
// Foo.instanceMethod(); // Error
System.out.println("==== instance ====");
Foo f1 = new Foo();
Foo f2 = new Foo();
System.out.println("==== f1 output ====");
System.out.println("f1.classVar: "+f1.classVar); // I class var
System.out.println("f1.instanceVar: "+f1.instanceVar); // I instance var
System.out.println("==== classVar change reuslt ====");
f1.classVar = "changed by f1";
System.out.println("Foo.classVar: "+Foo.classVar); // changed by f1
System.out.println("f2.classVar: "+f2.classVar); // changed by f1
System.out.println("==== instanceVar change reuslt ====");
f1.instanceVar = "changed by f1";
System.out.println("f1.instanceVar: "+f1.instanceVar); //changed by f1
System.out.println("f2.instanceVar: "+f2.instanceVar); // I instance var
}
}

300x250