JAVA, JSP

java - new, 객체참조변수, 필드(전역변수), 지역변수, set/get, default 생성자 메서드

suji0730 2024. 7. 1. 14:22
package kr.or.ksmart.a;

public class User {
	//클래스 내에는 필드와 메서드가 있다.
	//필드(field) = 전역변수(global variable) : 클래스 블록 안쪽, 메서드블록 밖에 선언
	//유사용어 : 프로퍼티(property)
	
	//00 data type으로 전역변수를 선언한다.
	//00 data type으로 필드를 선언한다.
	
	//전역변수(global variable)와 지역변수(local variable) 구분
	//중괄호 블록 밖에 선언된 변수는 중괄호 안쪽에서 사용 가능
	//중괄호 블록 안에서 선언된 변수는 중괄호 밖에서 사용 불가능
	private String uid;
	private String upw;
	private String uphone;
	private char ugender;
	private int uage;
	private String ulevel;
	/*
	 { System.out.println(c); //사용 불가능 
		int b = 20; 
	 	{ 
	 		int c = 10;
	  		System.out.println(uid); } }
	 */
	
	//uid 필드에 셋팅하기 위한 메서드 선언(private이기 때문에 AA01.java 에서 접근 불가능)
	public void setUid(String uid) {
		System.out.println(uid + "<--uid setUid User.java");
		//uid필드에 "id001" 값을 셋팅하는 코드가 필요함
		this.uid = uid; 
	}
	
	//uid 필드에 겟팅하기 위한 메서드 선언
	public String getUid() {
		return uid;
	}
	
	public void setUpw(String upw) {
		System.out.println(upw + "<-upw setUpw User.java");
		this.upw = upw;
	}
	
	public String getUpw() {
		return upw;
	}
	
	public void setUphone(String uphone) {
		System.out.println(uphone + "<-uphone setUphone User.java");
		this.uphone = uphone;
	}
	
	public String getUphone() {
		return uphone;
	}
	
	public void setUgender(char ugender) {
		System.out.println(ugender + "<-ugender setUgender User.java");
		this.ugender = ugender;
	}
	
	public char getUgender() {
		return ugender;
	}
	
	public void setUage(int uage) {
		System.out.println(uage + "<-uage setUage User.java");
		this.uage = uage;
	}
	
	public int getUage() {
		return uage;
	}
	
	public void setUlevel(String ulevel) {
		System.out.println(ulevel + "<-ulevel setUlevel User.java");
		this.ulevel = ulevel;
	}
	
	public String getUlevel() {
		return ulevel;
	}
	
	
	//default 생성자 메서드 선언
	//default 생성자 메서드 역할 : 새로운 객체를 생성
	//새로운 객체를 생성하면 새로운 주소가 생성되고 주소 내에 data 영역과 method 영역이 생긴다.
	public User() {
		
	}

}

 

package kr.or.ksmart.a;

public class AA01 {

	public static void main(String[] args) {


		User u01 = new User();
		
		u01.setUid("id001");
		System.out.println(u01.getUid()+"<-리턴값");
		
		u01.setUpw("pw001");
		System.out.println(u01.getUpw()+"<-리턴값");
		
		u01.setUphone("010-0001");
		System.out.println(u01.getUphone()+"<-리턴값");
		
		u01.setUgender('남');
		System.out.println(u01.getUgender()+"<-리턴값");
		
		u01.setUage(20);
		System.out.println(u01.getUage()+"<-리턴값");
		
		u01.setUlevel("구매자");
		System.out.println(u01.getUlevel()+"<-리턴값");
	
	}

}

 

private String uid;

 

전역변수에는 접근지정자가 private이기 때문에 직접 접근 할 수 없다. 셋팅하고 겟팅 할 수 없다.

해결 방법 : 전역변수 한 개 당 셋팅/겟팅하는 메서드를 각 하나씩 선언 하고 호출하면 된다.

public void setUid(String uid) {

System.out.println(uid);

this.uid = uid;

}

 

public String getUid() {

return uid;

}