Java Programming
package com.encore.hms.domain;
import com.encore.hms.domain.sup.Person;
public class StudentDTO extends Person {
// 자기 자신만의 고유한 요소
public String stuId;
public StudentDTO() {
// super(); - 묵시적으로 존재한다.
}
public StudentDTO(String name, int age, String address, String stuId) {
// super(); - 묵시적으로 존재한다.
// super.setName(name); // this.setName(name); 이라고 작성할 수도 있지만, 가독성을 위해서 super.setName(name); 이라고 작성하는 것이 좋다.
// super.setAge(age);
// super.setAddress(address);
super(name, age, address);
this.stuId = stuId;
}
public String getStuId() {
return stuId;
}
public void setStuId(String stuId) {
this.stuId = stuId;
}
public String studentInfo() {
// return "name=" + super.getName() + ", age=" + super.getAge() + ", address=" + super.getAddress() + ", stuId=" + stuId;
return super.personInfo() + ", stuId='" + stuId + '\'';
}
}
package com.encore.hms.domain;
import com.encore.hms.domain.sup.Person;
public class TeacherDTO extends Person {
private String subject;
public TeacherDTO() {
}
public TeacherDTO(String name, int age, String address, String subject) {
super(name, age, address);
this.subject = subject;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String teacherInfo() {
return super.personInfo() + ", subject='" + subject + '\'';
}
}
package com.encore.hms.domain;
import com.encore.hms.domain.sup.Person;
public class EmployeeDTO extends Person {
private String dept;
public EmployeeDTO() {
}
public EmployeeDTO(String name, int age, String address, String dept) {
super(name, age, address);
this.dept = dept;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
public String employeeInfo() {
return super.personInfo() + ", dept='" + dept + '\'';
}
}
package com.encore.hms.domain.sup;
public class Person {
// 자식들에게 물려줄 공통의 요소
// 접근제어자가 private 이므로 자식이지만 접근을 허용하지 않는다.
// 다만 protected 열어주면 자식의 접근을 허용할 수 있다.
private String name;
private int age;
private String address;
public Person() {
super();
}
public Person(String name, int age, String address) {
super();
this.name = name;
this.age = age;
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age <= 0) {
System.out.println("나이는 음수일 수 없습니다.");
} else {
this.age = age;
}
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String personInfo() {
return "name='" + name + '\'' +
", age=" + age +
", address='" + address + '\'';
}
}
import com.encore.hms.domain.EmployeeDTO;
import com.encore.hms.domain.StudentDTO;
import com.encore.hms.domain.TeacherDTO;
public class OopMain {
public static void main(String[] args) {
StudentDTO stu01 = new StudentDTO();
/* 접근지정자가 private일 경우 접근을 허용하지 않는다.
System.out.println("인스턴스 소유의 변수에 접근하여 값을 가져온다 -> " + stu01.name);
System.out.println("인스턴스 소유의 변수에 접근하여 값을 가져온다 -> " + stu01.age);
System.out.println("인스턴스 소유의 변수에 접근하여 값을 가져온다 -> " + stu01.address);
System.out.println("인스턴스 소유의 변수에 접근하여 값을 가져온다 -> " + stu01.stuId);
*/
// setter, getter를 이용한 접근
System.out.println("인스턴스 소유의 메서드에 접근하여 값을 가져온다 -> " + stu01.getName());
stu01.setName("이윤재");
System.out.println("인스턴스 소유의 메서드에 접근하여 값을 가져온다 -> " + stu01.getName());
// 스페셜 생성자 호출을 통한 객체 생성
System.out.println();
System.out.println("스페셜 생성자 호출을 통한 객체 생성");
StudentDTO stu02 = new StudentDTO("이윤재", 25, "강남구", "2020");
System.out.println(stu02);
System.out.println("인스턴스 소유의 메서드에 접근하여 값을 가져온다 -> " + stu02.getName());
System.out.println("인스턴스 소유의 메서드에 접근하여 값을 가져온다 -> " + stu02.getAge());
System.out.println("인스턴스 소유의 메서드에 접근하여 값을 가져온다 -> " + stu02.getAddress());
System.out.println("인스턴스 소유의 메서드에 접근하여 값을 가져온다 -> " + stu02.getStuId());
// 나이 변경 후 변경된 값 확인
System.out.println();
stu02.setAge(-100);
System.out.println("인스턴스 소유의 메서드에 접근 -> " + stu02.getAge());
// 강사객체 생성 후 정보 확인
System.out.println();
System.out.println("강사객체 생성 후 정보 확인");
TeacherDTO tea01 = new TeacherDTO("임정섭", 30, "서초구", "1992");
System.out.println(tea01);
// 직원객체 생성 후 정보 확인(Employee - name, age, address, dept)
System.out.println();
System.out.println("직원객체 생성 후 정보 확인");
EmployeeDTO emp01 = new EmployeeDTO("태하", 30, "동작구", "매니저");
System.out.println(emp01);
}
}
import com.encore.hms.domain.EmployeeDTO;
import com.encore.hms.domain.StudentDTO;
import com.encore.hms.domain.TeacherDTO;
public class OopExtendsMain {
public static void main(String[] args) {
// 객체생성
StudentDTO stu02 = new StudentDTO("이윤재", 25, "강남구", "2020");
System.out.println(stu02.personInfo());
System.out.println(stu02.studentInfo());
System.out.println();
TeacherDTO tea02 = new TeacherDTO("임정섭", 30, "서초구", "1992");
System.out.println(tea02.personInfo());
System.out.println(tea02.teacherInfo());
System.out.println();
EmployeeDTO emp02 = new EmployeeDTO("태하", 30, "동작구", "매니저");
System.out.println(emp02.personInfo());
System.out.println(emp02.employeeInfo());
}
}
'한화시스템 BEYOND SW캠프 > TIL' 카테고리의 다른 글
[5주차] 24.02.06 화요일 (0) | 2024.02.06 |
---|---|
[5주차] 24.02.05 월요일 (0) | 2024.02.05 |
[4주차] 24.02.01 목요일 (0) | 2024.02.01 |
[4주차] 24.01.31 수요일 (0) | 2024.01.31 |
[4주차] 24.01.30 화요일 (0) | 2024.01.30 |