JAVA/JAVA 문법

JAVA : this로 사용하는 멤버변수와 접근제어자(Access)

신강희 2024. 6. 3. 11:36
728x90

< this로 사용하는 멤버변수와 접근제어자(Access) >

 

# 자바에서 this 키워드는 현재 객체의 인스턴스를 가리키는 참조 변수로, 주로 인스턴스 변수와 메소드 매개변수를 구분할 때 사용된다.

- this 키워드를 사용하면 클래스의 멤버 변수와 메소드를 명확하게 참조할 수 있다.

 

# 멤버 변수와 this 키워드

- 클래스 내에서 멤버 변수를 가리키기 위해 this 키워드를 사용할 수 있다.

- 생성자나 메소드 내에서 매개변수 이름이 멤버 변수 이름과 동일할 때 this를 사용하여 이를 구분

 

# 접근제어자 (Access Modifiers)

- 접근제어자는 클래스, 변수, 메소드, 생성자 등의 접근 범위를 제어하는 데 사용된다.

- 자바에는 네 가지 접근제어자가 있다 !

  1. private:
    • 동일 클래스 내에서만 접근 가능
    • 다른 클래스에서는 접근할 수 없습니다. (접근 하려면 게터와 세터 이용 혹은 생성자로 초기화하여 사용)
  2. default (package-private):
    • 동일 패키지 내에서만 접근 가능 (아무것도 적지 않는것)
    • 접근제어자를 명시하지 않으면 기본적으로 default로 설정
  3. protected:
    • 동일 패키지 또는 상속받은 클래스에서 접근 가능
    • 주로 상속 관계에서 자주 사용
  4. public:
    • 모든 클래스에서 접근 가능

# 코드로 작성해보자!

- Access 라는 프로젝트를 생성하였고, src 안에 main과 model 이라는 명칭으로 패키지를 생성해 주었다!

- main 패키지 안에 Accessmain 클래스를, model 패키지 안에 Member 이라는 클래스를 생성하여 작성

 

package main;

import model.Member;

public class AccessMain {

	public static void main(String[] args) {
		// 객체 생성
		// 다른 패키지에 있는 변수를 가져다 쓰기위해서 import 해줘야함 (파이썬과 동일)
		// 다른 패키지에서 public 으로 생성한걸 가져온다.
		Member m1 = new Member();
		
		// 이제 변수를다 private 로 변경하여서 생성이 불가능해짐
		// m1.name = "홍길동";
		// m1.tel = "010-1111-2222";
		// m1.address = "인천 서구 연희동";
		
		// 리소스 에서 게터 세터 생성후 데이터 다시 작성
		m1.setName("홍길동");
		m1.setTel("010-2222-3333");
		m1.setAddress("인천 서구 청라");
		
		
		Member m2 = new Member("김나나", "010-2222-3333", "인천 서구 청라동");
		System.out.println( m2.getName());
	}

}

 

package model;

public class Member {
	
	// 이데이터는 스택에 저장
	// 클래스의 멤버 변수
	// 변수든 함수든 다른 패키지에서 사용하게 하기위해 public 로 생성해 주어야함
	
	// 접근제어자는 총 4개
	// 1. 아무것도 안쓰는것 => default : 같은 패키지 내에서만 가능
	// 2. public : 어디서든 접근 가능.
	// 3. private : 어디서든 접근 불가능.
	// 4. protected : 상속관계만 접근 가능.
	
	private String name;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getTel() {
		return tel;
	}
	public void setTel(String tel) {
		this.tel = tel;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	private String tel;
	private String address;
	
	// 패키지(폴더)가 다른곳에서 사용하기 위해서 public 으로 생성해 주어야함
	public Member(){
		
	}
	// 이데이터는 힙에 저장 메모리 저장 장소가 다르므로 이제 변수이름을 똑같이 해도됨
	// 로컬 변수
	// 대신, this.를 사용해서 클래스의 객체 변수를 사용하는거라고 지정해줘야함
	public Member(String name, String tel, String address){
		
		this.name = name;
		this.tel = tel;
		this.address = address;
		
	}
}

 

다음 게시글로 계속~!

 

반응형