OOP_클래스_필드

Brogod97·2022년 12월 15일
0

KH TIL

목록 보기
15/37
post-thumbnail

클래스 (class)

  • 객체의 특성(속성, 기능)에 대한 정의를 한 것
    → 보통 클래스를 설계도에 비유함

  • 클래스는 사용자 정의 자료형

클래스 작성 시 반드시 필요한 것

객체 지향 언어의 특징 중 추상화(abstraction), 캡슐화(encapsulation)이 적용되어야 함

클래스 예시

Human 클래스 예시

public class Member {
	// 필드
	private String name;
	private int age;
	
    // 생성자
	public Member() {}

	// 메소드
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}

인간에 대한 일반적인 속성, 기능들을 포함하고 있음 (== 추상화)


클래스 접근 제어자

————구분동일 패키지 내전체설명
+publicOO누구나 쓸 수 있음 (공공의), 어디서든지 import할 수 있음
~(default)O외부패키지에서 사용 못함 (접근 불가), 같은 패키지 내에서만 사용 가능
public class 클래스명 {	
	// .............
}

class 클래스명 {
	// .............
}

필드 (Field)

: 객체의 속성을 작성하는 클래스 내부 영역

객체엔 (속성, 기능)이 있음
필드는 클래스에서 변수에 관련된 것(속성)을 작성하는 곳을 의미함

변수의 종류 정리

멤버 변수 (== 필드)

인스턴스 변수

  • 필드에 작성된 일반 변수

  • new 연산자에 의해서 객체(인스턴스)가 생성될 때 메모리가 할당된다고 하여 인스턴스 변수라고 함

  • Heap 영역(동적 메모리)에 메모리가 할당 됨

  • 객체가 생성될 때마다 생성됨

  • 객체가 참조하는 변수가 없을 경우 사라짐

클래스 변수 (== static 변수)
: static으로 선언된 멤버변수로, 프로그램 실행 시 정적 메모리 영역에 자동 할당되고, 프로그램 종료 시 자동 소멸됨

  • 필드에 static 예약어와 함께 작성된 변수

  • **static 영역에 메모리가 할당**되어 프로그램 종료 시 까지 유지됨

  • 프로그램 실행 시 1회만 생성되는 변수

지역변수

  • 메소드 또는 제어문 안에서 선언된 변수

  • Stack 영역에 할당되었다가, 메소드 종료 시 소멸 됨


필드 표현식

[접근제한자] [예약어] class 클래스명 {

  [접근제한자] [예약어] 자료형 변수명 [= 초기값];

}

필드 예시

public class Academy { 
	public int temp1;
	protected int temp2;
	int temp3; 		//접근제한자 생략 시 (default)
	private int temp4; 	//캡슐화 원칙으로 private 사용
}

필드 접근제한자

——————구분해당 클래스 내부같은 패키지 내후손 클래스 내전체
+publicOOOO
#protectedOOO
~(default)OO
-privateO

필드 예약어

static

static: 공전이라는 뜻.

static이라는 예약어를 보고 값을 얻어옴 (갖고 있는게 아님)

같은 타입의 여러 객체가 공유할 목적의 필드에 사용하며, 프로그램 시작시 정적 메모리(static) 영역에 자동 할당되는 멤버에 적용

static 표현식

public class Academy { 
	private static int temp1; 	
}

final

하나의 값만 계속 저장해야 하는 변수에 사용하는 예약어

public class Academy { 
	private final int TEMP1 = 100; // final 키워드가 붙은 필드명은 
					  // 모두 대문자로 표기
	private int temp4;
}

인스턴스 생성 메모리 구조

0개의 댓글