1. 클래스와 인스턴스
□ 클래스와 인스턴스
// 아래의 로직이 1000줄 짜리의 복잡한 로직이라고 가정.
System.out.println(10 + 20);
System.out.println(20 + 40);
중복 제거 → 메소드 사용 리펙토링(refactoring)
public static void sum(int left, int right) {
System.out.println(left + right);
}
public static void main(String[] args) {
sum(10, 20);
sum(20, 40);
}
□ Calculator class
2. 클래스 맴버와 인스턴스 맴버
□ 클래스 소속의 변수와 메소드
※ 인스턴스 메소드는 클래스 맴버에 접근 할 수 있다.
클래스 메소드는 인스턴스 맴버에 접근 할 수 없다.
public class ClassMemberDemo {
public static void main(String[] args) {
C1 c = new C1();
// 인스턴스를 이용해서 정적 메소드에 접근 -> 성공
// 인스턴스 메소드가 정적 변수에 접근 -> 성공
1 - c.static_static();
// 인스턴스를 이용해서 정적 메소드에 접근 -> 성공
// 정적 메소드가 인스턴스 변수에 접근 -> 실패
2 - c.static_instance();
// 인스턴스를 이용해서 인스턴스 메소드에 접근 -> 성공
// 인스턴스 메소드가 클래스 변수에 접근 -> 성공
3 - c.instance_static();
// 인스턴스를 이용해서 인스턴스 메소드에 접근 -> 성공
// 인스턴스 메소드가 인스턴스 변수에 접근 -> 성공
4 - c.instance_instance();
// 클래스를 이용해서 클래스 메소드에 접근 -> 성공
// 클래스 메소드가 클래스 변수에 접근 -> 성공
5 - C1.static_static();
// 클래스를 이용해서 클래스 메소드에 접근 -> 성공
// 클래스 메소드가 인스턴스 변수에 접근 -> 실패
6 - C1.static_instance();
// 클래스를 이용해서 인스턴스 메소드에 접근 -> 실패
7 - C1.instance_static();
// 클래스를 이용해서 인스턴스 메소드에 접근 -> 실패
//C1.instance_instance();
}
}
변수 | 정의 |
C1 | 클래스 |
c | 인스턴스 |
static_variable | 클래스 변수 (Static Field) |
instance_variable | 인스턴스 변수 (Non-Static Filed) |
메소드 | 메소드위치 | 호출변수 | 실행여부 |
static_static | 클래스 | 클래스 | O |
static_instance | 클래스 | 인스턴스 | X |
instance_static | 인스턴스 | 클래스 | O |
instance_instance | 인스턴스 | 인스턴스 | O |
출처 : 생활코딩 유튜브 :
https://www.youtube.com/watch?v=TEyLPQeo6pc&list=PLuHgQVnccGMCeAy-2-llhw3nWoQKUvQck&index=70