//제공자코드
class Employee {
String no;
String name;
int salary;
void setNo(String no) {
this.no = no;
// 변수이름이 같을 때 매개변수를 우선시해서 no = no; 불가능
// 사용자가 쓰기 편하게 가독성을 높여야한다.
// 정확히 멤버변수임을 알리려고 this.을 사용한다. this.는 현재 사용중인 객체를 알리는 자바 예약어
// 메서드나 생성자 내부에서 사용 가능
// 객체 안에서 자기 자신을 지칭하는 뜻
// this.를 쓴 이유 : 객체지향의 목적에 부합하기 위해, 절차지향언어에서는 사용하지 않는다
// 사용자가 매개변수 이름 보고 짐작하게 하려고 멤버변수랑 이름 같이줌.
// 다르면 굳이 this 안써도됨.
}
void setName(String name) {
this.name = name;
}
void setSalary(int salary) {
this.salary = salary;
}
String getNo() {
return no;
}
String getName() {
return name;
}
int getSalary() {
return salary;
}
void print() {
System.out.println("사번:" + no + ", 사원명:" + name + ", 기본급:" + salary);
}
}
//사용자코드
public class HR {
public static void main(String[] args) {
Employee e1 = new Employee();
String no = e1.no;
System.out.println(e1.no); //null
e1.setNo("2301"); //사번 설정한다
e1.setName("홍길동"); //사원명 설정한다
e1.setSalary(1000); //기본급 설정한다
System.out.println("사원의 사번-" + e1.getNo() + ", 사원명-"
+ e1.getName() + ", 기본급-" + e1.getSalary());
e1.print(); //"사번:사번값, 사원명:사원명값, 기본급:기본급값" 이 출력되도록 한다
Employee eTemp;
// eTemp = null;
// eTemp = new Employee();
eTemp = e1;
System.out.println(e1 == eTemp);//true, 같은 메모리를 참조함
eTemp.setSalary(2000);
System.out.println(e1.getSalary()); //2000
eTemp = null;
System.out.println(eTemp); //null
System.out.println(e1.getSalary()); //2000
// System.out.println(eTemp.getSalary()); //NullPointerException 발생 후 프로그램 종료됨
// 오류 라인번호의 . 연산자 앞의 것이 오류일 확률이 높다
// eTemp. .연산자가 해당 객체를 찾아가는것. 참조 메모리 객체를 찾아가라 하면 논리적 위배
System.out.println("THE END"); //NullPointerException 때문에 프로그램이 죽어서 그 다음 step 진행을 못함
Employee[] employees; //선언, Employee[]:employee 배열타입의 참조형 배열 변수
// employees:메서드 내에 선언된 지역변수, 자동초기화X
// 최대 20명의 사원이 저장될 수 있는 배열 생성
employees = new Employee[20];
employees[0] = e1;
/*
Employee e2 = new Employee();
e2.setNo("2302"); e2.setName("name2"); e2.setSalary(1000);
employees[1] = e2;
Employee e3 = new Employee();
e3.setNo("2303"); e3.setName("name3"); e3.setSalary(1000);
employees[2] = e3;
Employee e4 = new Employee();
e4.setNo("2304"); e4.setName("name4"); e4.setSalary(1000);
employees[3] = e4;
Employee e5 = new Employee();
e5.setNo("2305"); e5.setName("name5"); e5.setSalary(1000);
employees[4] = e5;
*/
// 위의 4블럭 for문으로
for(int i=2; i<=5; i++) {
Employee e2 = new Employee(); // for문을 돌 때마다 다시 변수가 만들어짐
// 한번 돌때마다 새로운 e2가 만들어지는 것
e2.setNo("230" + i); e2.setName("name" + i); e2.setSalary(1000);
employees[i - 1] = e2;
}
// 출력
// for(int i=0; i<employees.length; i++) { // NullPointerException 발생
for(int i=0; i<5; i++) {
employees[i].print();
}
}
}
'언어 > Java' 카테고리의 다른 글
접근제어자(Access Modifier) (0) | 2023.07.31 |
---|---|
생성자 (0) | 2023.07.31 |
문서용 주석 document comment (0) | 2023.07.28 |
클래스 예제 (0) | 2023.07.28 |
클래스 (0) | 2023.07.28 |