부스트코스 생활코딩 [쉽게 배우는 자바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
'Language > JAVA' 카테고리의 다른 글
[JAVA] 상속 1~6 Inheritance , overriding , overloading , super (0) | 2022.02.10 |
---|---|
[JAVA] 객체지향 프로그래밍 7~9 생성자 this / 클래스화 인스턴스화 (0) | 2022.02.09 |
[JAVA] 객체지향 프로그래밍 1~3 클래스, 인스턴스, 변수, 메소드 (0) | 2022.02.07 |
[JAVA] 메소드 1~9 method , class, static, instance (0) | 2022.02.06 |
[JAVA] 2-8.1~8.2 종합응용 2 (배열, 조건문, 반복문, scanner) (0) | 2022.02.05 |