본문 바로가기
JAVA SE/Code

[20.07.10/Day_03] Java SE / Encapsulation, Constructor, Data Type

by 파프리카_ 2020. 7. 10.
728x90
반응형

Encapsulation

 

\ Person.java

package step1;
/*
 * Encapsulation 적용 클래스
 * 외부에 공개하지 않을 부분은 private 접근제어자를 명시
 * 외부에 공개하여 소통할 부분은 public 접근제어자를 명시
 */
public class Person {
	
	// ! name 으로 연습
	private String name;
	
	// setter는 외부에서 정보를 할당하기 위한 메서드
	public void setName(String name) {
		// this 예약어(keyword)는 
		// 인스턴스 변수를 가리키기위하여 사용
		// this를 이용하여 인스턴스변수와 매개변수를 구분한다.
		this.name = name ;
	}
	// getter : 외부에서 정보를 반환받기 위한 메서드
	public String getName() { 
		  return name; 
	}
	 
	/*
	 * 조건문
	 * 매개변수 age의 전달된 값이 1미만일 경우 :
	 *   "잘못된 나이이므로 할당할 수 없습니다."가 출력
	 * 1 이상일 경우:
	 *    할당한다
	 */
	// ! age로 연습
	private int age = 1 ;
	
	// setter : 할당 메서드 (return이 없다)
	public void setAge(int age) {
		if(age > 1) {
			this.age = age;
		} else {
			System.out.println("잘못된 나이이므로 할당할 수 없습니다.");
		}
	}
	// getter : 반환 메서드 (return이 있다)
	public int getAge() {
		return age;
	}
	
	
}

 

\ TestSetterGetter.javapackage step1;

/*
 * Encapsulation 적용된 클래스를 테스트하는 예제
 * setter / getter를 활용해보자!
 */
public class TestSetterGetter {
	public static void main(String[] args) {
		// Person 객체 생성, 참조변수는 p로 한다
		Person p = new Pe rson();
		
		//// p 객체의 name에 아이유를 할당해본다
		
		// p.name = "아이유"; // private이므로 접근불가
		
		// name에 접근,할당하기 위하여 setter인 
		// setName메서드를 이용한다
		p.setName("아이유");
		
		// 할당한 name을 반환받아서 할당 후, 출력해본다
		String name = p.getName();
		System.out.println(name);
		
		// 위 두 라인을 한 라인으로 표현하면 아래와 같다
		System.out.println(p.getName());
		System.out.println("*********************************");
		
		//// age를 할당 -> 반환해보자
		p.setAge(-28);
		int age = p.getAge();
		System.out.println(age+"살"); //28
		
		System.out.println("*********************************");
		System.out.println(name+"는 "+age+"살이다.");
		
		// 잘못된 나이일 경우에 할당도지 않도록
		// Person Class에 조건문을 걸어주자.
	}

}

 


Constructor 생성자

\ CreditCard.java

package step4;

public class CreditCard {
	private String customerInfo ;
	// constructor
	/*
	 * 생성자에 매개변수가 정의되어서, 
	 * 객체 생성 시에는 매개변수에 알맞는 정보를 전달할 때만
	 * 객체를 생성할 수 있다.
	 */
	public CreditCard(String customerInfo) {
		this.customerInfo = customerInfo;
	}
	// getter
	public String getCustomerInfo() {
		return customerInfo ;
	}
	// setter
	public void setCustomerInfo(String customerInfo) {
		this.customerInfo = customerInfo;
	}
}

 

\ TestConstructor2.java

package step4;

public class TestConstructor2 {
	public static void main(String[] args) {
		// 매개변수가 없는 default 생성자가 아니므로,
		// 아래와 같이 객체를 생성할 수 없다.
		// CreditCard c = new CreditCard();
		CreditCard c = new CreditCard("밀크 개인정보");
		System.out.println(c.getCustomerInfo());
		
		c.setCustomerInfo("예울 개인정보");
		System.out.println(c.getCustomerInfo());
	}

}

[ Data Type ]

Primitive data type 

\ TestPrimitiveDataType.java

package step6;
/*
 * 자바 기본형 데이터 타입
 */
public class TestPrimitiveDataType {
	public static void main(String[] args) {
		// 1. 정수형
		byte b = 1;
		b = 2;
		System.out.println(Byte.MAX_VALUE); // 127
		System.out.println(Byte.MIN_VALUE); // -128
		System.out.println(b); // 2
		//b = 130; // error byte형의 범위를 벗어나서 
		
		short s = 130;
		int i = 111111;
		long l = 77777L ; // L은 long데이터임을 명시
		
		// 2. 실수형
		float f = 3.14F; // F로 float형 데이터임을 명시
		/*
		 * 실수형의 기본형은 double(8byte)이기 때문에,
		 * float(4byte)이기에 float시 끝에 F를 명시해야 한다.
		 */
		double d = 3.14;
		
		// 3. 문자형 
		char c = 'a';
		c = '밥';
		// c = 'ab'; // error 문자형은 한 글자만 가능 !
		
		// 4. 논리형
		boolean bo = true;
		bo = false;
		
		/* 참고
		* type casting
		* 정수형의 기본형은 int
		* 실수형의 기본형은 double
		*/
		byte b1 = 1;
		byte b2 = 2;
		// byte b3 = b1+b2; 
		//error : 연산결과는 type과 상관없이 int로 인식
		// solution : type casting(형변환) 해주어야 함
		byte b3 = (byte) (b1 + b2) ;
	}
}

 

Reference data type

 

\ Person.java

package step7;

public class Person {
	private String name;
	public Person(String name) {
		this.name = name;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
}

 

\TestReferenceDataType.java

package step7;

public class TestReferenceDataType {
	public static void main(String[] args) {
		/*
		 * Person : 참조형 데이터 타입
		 * p : 참조 변수 reference variable
		 *     - 객체를 참조하는 주소값을 저장한다.
		 * = : 할당 or 대입
		 * new : java keyword for 객체 생성
		 * Person("아이유") : 생성자 Constructor
		 */
		Person p = new Person("아이유");
		System.out.println(p.getName());
		
		Person p1 = new Person("박보검");
		System.out.println(p1.getName());
		
		p = p1; // p1 주소값을 p에 할당한다.
		System.out.println(p.getName());
		System.out.println(p1.getName());
	}
}
728x90
반응형