Deeb
디비의 DB
Deeb
전체 방문자
오늘
어제
  • 분류 전체보기 (243)
    • Frontend (63)
      • HTML & CSS (27)
      • JavaScript (17)
      • jQuery (8)
      • React (6)
    • Backend (98)
      • Java (19)
      • JDBC (2)
      • Servlet & JSP (13)
      • Spring (17)
      • Project (0)
      • 개발 공부 (11)
      • 문제 풀이 (8)
      • Algorithm (1)
      • DataBase (0)
      • Oracle (18)
      • Error (8)
    • Knou (1)
    • Review (14)
    • TIL (33)
    • 삽질기록 (8)
    • deebtionary (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • HTML
  • css
  • GIT
  • 배열
  • 2학기
  • 리액트
  • 방송대
  • CLASS
  • 기초
  • 공부
  • Java
  • 자바
  • js
  • 후기
  • 방통대
  • For
  • DBMS
  • 함수
  • alter
  • 책
  • 삭제
  • 클래스
  • 정의
  • 서평단
  • 다형성
  • 정처기
  • 추천
  • 에러
  • 한빛미디어
  • DB

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Deeb

디비의 DB

[Java] Inheritance(상속) 예제
Backend/문제 풀이

[Java] Inheritance(상속) 예제

2021. 9. 8. 17:53

📝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
    'Backend/문제 풀이' 카테고리의 다른 글
    • 컬렉션 예제1 _Student, ArrayStudent, CollectionStudent, CollectionRun
    • [Java] Polymorphism(다형성)_예제
    • [Java|연습] 2차원 Array(배열)_기초 문제 행,열 합
    • [Java|연습] Array(배열)_lotto(Math.random())
    Deeb
    Deeb

    티스토리툴바