DevYoon
[Java] 객체지향 본문
Java 객체지향
1️⃣ 인스턴스 생성
클래스명 변수명 = new 클래스명();
2️⃣ 인스턴스 접근
인스턴스에 접근하기 ➡️ 인스턴스 변수 사용해서만 가능
class Print{ public String delimiter = ""; public void A(){ ~~~~~~~ } } Public class Main{ public static void main(String[], args){ Print p2 = new Print(); p2.A(); } }
2️⃣ static
변수나 메소드 앞에 static ➡️ 클래스 소속 변수
static을 제거하고 인스턴스 소속으로 만들면 클래스에서 접근이 불가능
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(); 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 } }
3️⃣ 생성자와 this
클래스의 이름과 동일한 메서드가 있다면 호출하는 것이 약속
constructor를 위의 메서드에 넣기
this ➡️ 변수명이 같을 때 인스턴스를 가리켜서 구분
class Print{ public String delimiter = ""; public Print(String delimiter){ this.delimiter = delimiter; } }