*모든 실습은 eclipse에서 진행되고 있다.
import java.io.FileWriter;
import java.io.IOException;
public class OthersOOP {
public static void main(String[] args) throws IOException {
// class : System, Math, FileWriter
// instance : f1, f2
FileWriter f1 = new FileWriter("data.txt"); //인스턴스 생성
f1.write("Hello");
f1.write(" Java");
FileWriter f2 = new FileWriter("data2.txt"); //인스턴스 생성
f2.write("Hello");
f2.write(" Java2");
f2.close();
f1.write("!!!");
f1.close();
}
}
- 만들고 싶은 범위 드래그-오른쪽 클릭- Refactor - Extract Method (Alt+Shift+M)
- 원하는 class 드래그- Refactor - Move Type to New File
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");
}
}
public class MyOOP {
public static void main(String[] args) {
Print p1 = new Print();
p1.delimiter = "----";
Print p2 = new Print();
p2.delimiter = "****";
//인스턴스가 있으면 쉽게 변수도 바꿀 수 있다.
p1.A();
p2.A(); //인스턴스가 있으면 쉽게 메솓즈를 호출할 수 있다.
p1.B();
p2.B();
}
}
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();
Foo f1 = new Foo();
Foo f2 = new Foo();
//
System.out.println(f1.classVar); // I class var
System.out.println(f1.instanceVar); // I instance var
//
f1.classVar = "changed by f1";
System.out.println(Foo.classVar); // changed by f1
System.out.println(f2.classVar); // changed by f1
//
f1.instanceVar = "changed by f1";
System.out.println(f1.instanceVar); // changed by f1
System.out.println(f2.instanceVar); // I instance var
}
}
class Print {
public String delimiter = "";
public Print(String delimiter) {
this.delimiter = delimiter; //-------1번
}
// this는 각 인스턴스를 가리키는 예약어
public Print(String _delimiter) {
delimiter = _delimiter; //-------2번
}
// 1번 2번 둘 다 가능하다.
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");
}
}
public class MyOOP {
public static void main(String[] args) {
Print p1 = new Print("----");
p1.A();
Print p2 = new Print("****");
p2.B();
}
}
Reference: