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
반응형
'JAVA SE > Code' 카테고리의 다른 글
[20.07.15/Day_06] Java SE / Array 배열 (0) | 2020.07.15 |
---|---|
[20.07.14/Day_05] Java SE / Variable Scope, 객체 초기화, Relationship association, aggregation (0) | 2020.07.14 |
[20.07.13/Day_04] Java SE / 연산자, 제어문(조건문,반복문) (1) | 2020.07.13 |
[20.07.09/Day_02] Java SE / Class, Object, variable, method 활용 (0) | 2020.07.09 |
[20.07.08/Day_01] Java SE / Hello World 출력해보자 (0) | 2020.07.09 |