📝Person &Student
-값을 생성하고 출력하는 예제
VO 클래스 - Person
: getter/setter + 필드 정보를 한 번에 출력하는 용도의 메서드
package edu.kh.Inheritance.ex.model.vo; public class Person { //필드 private String name; private int age; private String nationality; //생성자 : 객체 생성 + 객체 생성 시 필드 초기화 + 특정 기능 수행 public Person() {} //기본 생성자 //매개변수 있는 생성자 public Person( String name, int age, String nationality ) { this.name = name; this.age = age; this.nationality = nationality; //this 참조 변수: 객체 생성 시 내부에 같이 생성 되며, 객체의 시작 주소를 참조 } }
!!조건!! 생성자를 하나도 작성하지 않은 경우
➡ *컴파일러*가 자동으로 기본 생성자를 추가해준다.
vo 클래스 - student
package edu.kh.Inheritance.ex.model.vo; public class Student { // 학생이 가지고 있어야하는 필드 // 필드 private String name; private int age; private String nationality; private int grade; // 학년 private int classRoom; // 반 //생성자 public Student() { } // 기본 생성자 //getter/setter public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getNationality() { return nationality; } public void setNationality(String nationality) { this.nationality = nationality; } public int getGrade() { return grade; } public void setGrade(int grade) { this.grade = grade; } public int getClassRoom() { return classRoom; } public void setClassRoom(int classRoom) { this.classRoom = classRoom; } }
➡ 한 프로그램안에 중복되는 클래스가 있다.
Person과 Student의 의미적으로, 추상적으로 부를수 있는것이 부모가 되기 때문에 Person은 부모 클래스
Student는 자식 클래스
-> 학생은 사람이다 : o / 사람은 학생이다 : x (모든 사람이 학생이 아니기 때문이다)
=> 부모로부터 중복되는 부분을 받아서 쓸 것이다.
private String name; private int age; private String nationality; + 이것들의 getter/setter 지우기
vo 클래스 - student : 부모 클래스로부터 상속
package edu.kh.Inheritance.ex.model.vo; public class Student extends Person { private int grade; // 학년 private int classRoom; // 반 //생성자 public Student() { } //Student getter/setter public int getGrade() { return grade; } public void setGrade(int grade) { this.grade = grade; } public int getClassRoom() { return classRoom; } public void setClassRoom(int classRoom) { this.classRoom = classRoom; } }
👉public class Student extends Person {}
: extends로 확장하고 부모클래스명 작성
➡ Person 클래스와 중복되는 필드, 메서드를 물려받아 사용 -> 중복되는 내용 제거
InheritanceService 클래스
package edu.kh.Inheritance.ex.model.service; import edu.kh.Inheritance.ex.model.vo.Person; import edu.kh.Inheritance.ex.model.vo.Student; public class InheritanceService { public void example1() { //Person, Student 상속 확인 // 1) Person 객체 생성 Person p1 = new Person(); //기본생성자 p1.setName("봉국"); p1.setAge(20); p1.setNationality("대한민국"); // 2) Student 객체 생성 Student s1 = new Student(); // s1. 입력 후 상속 받은 부모의 setter/getter가 자동완성 구문에 포함되어있는지 확인!! s1.setName("봉봉봉"); s1.setAge(5); s1.setNationality("프랑스"); // ↑ 상속받은 메서드 3개 s1.setGrade(3); s1.setClassRoom(1); } }
➡ s1. 입력 후 상속 받은 부모의 setter/getter가 자동완성 구문에 포함되어있는지 확인!!
잘 되었다면 상속 되었다는 증거
p1에 존재하는 멤버 변수..?
setAge :
부모의 int값이 리턴되는데 Person 객체의 메서드이다.
InheritanceRun 클래스
package edu.kh.Inheritance.ex.run; import edu.kh.Inheritance.ex.model.service.InheritanceService; public class InheritanceRun { public static void main(String[] args) { InheritanceService service = new InheritanceService(); service.example1(); } }
➡ 상속된 결과까지 잘 나온다.
반응형
'Backend > 문제 풀이' 카테고리의 다른 글
컬렉션 예제1 _Student, ArrayStudent, CollectionStudent, CollectionRun (0) | 2021.10.04 |
---|---|
[Java] Polymorphism(다형성)_예제 (0) | 2021.09.11 |
[Java|연습] 2차원 Array(배열)_기초 문제 행,열 합 (0) | 2021.09.02 |
[Java|연습] Array(배열)_lotto(Math.random()) (0) | 2021.09.02 |
[Java|연습] Array(배열)_초기화 (0) | 2021.09.02 |