본문 바로가기
Language/JAVA

[JAVA] 객체지향 프로그래밍 4~6 class instance static

by 아이엠제니 2022. 2. 8.

부스트코스 생활코딩 [쉽게 배우는 자바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