안녕하세요.
https://blog.naver.com/sysysy0302 여니입니다 :)
상속
상속이란 클래스 간의 상호작용입니다. 쉽게 말해서 다른 클래스가 가지고 있는 정보를 자신이 포함하겠다는 의미입니다. 즉, 다른 클래스에 대한 정보를 상속받아 자신이 그대로 사용할 수 있도록 합니다. 상속을 적절히 활용할 때 불필요한 코드의 수를 줄일 수 있어서 상당히 효율적인 개발이 이루어질 수 있습니다.
지난번 기초적인 상속 내용을 확인해보며 직접 실습해보았는데요, 자세한 내용은 위의 git 주소를 확인해주세요.
직접 실습을 통해 알아보겠습니다.
자바에서는 이러한 상속하여 쓰이는 get,set함수를 자동으로 생성해주는 편리한 기능도 제공하고 있습니다.
마우스 우클릭 - Source (단축키 : alt + shift + s) - Generate Getters and Setters...클릭
'Select All'클릭하고 generate
생성자 함수도 자동 생성 가능합니다.
마우스 우클릭 - Source (단축키 : alt + shift + s) - Generate Constructor using Fields...클릭
Generate 클릭
생성자 함수가 생성된 모습입니다.
super(); 은 부모 클래스를 사용하겠다는 의미입니다.
이렇게 하여 Person이란 클래스가 완성되었습니다.
<Person 클래스>
package Inheritance;
public class Person {
private String name;
private int age;
private int height;
private int weight;
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 int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
public Person(String name, int age, int height, int weight) {
super();
this.name = name;
this.age = age;
this.height = height;
this.weight = weight;
}
}
이제 Student클래스를 생성해줍니다.
extends Person클래스를 상속하도록 표기해줍니다.
코드의 가장 아래에 보면 Student클래스에 없는 변수까지 표기되는데요, 자신의 부모인 Person클래스의 변수를 상속 받아 쓸 수 있기 때문에, Student 변수 외에 Person의 변수도 자동으로 함께 매개변수로 부여되어 사용할 수 있습니다.
<Student클래스>
package Inheritance;
public class Student extends Person {
private String studentID;
private int grade;
private double GPA;
public String getStudentID() {
return studentID;
}
public void setStudentID(String studentID) {
this.studentID = studentID;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
public double getGPA() {
return GPA;
}
public void setGPA(double gPA) {
GPA = gPA;
}
public Student(String name, int age, int height, int weight, String studentID, int grade, double gPA) {
super(name, age, height, weight);
this.studentID = studentID;
this.grade = grade;
GPA = gPA;
}
// 아래의 코드는 자신의 모든 변수를 출력하여 보여줄 수 있습니다.
// 각각의 변수를 불러오는 get함수(특정한 변수의 값을 불러옵니다.)
public void show() {
System.out.println("---------------------------");
System.out.println("학생 이름 : " + getName());
System.out.println("학생 나이 : " + getAge());
System.out.println("학생 키 : " + getHeight());
System.out.println("학생 몸무게 : " + getWeight());
System.out.println("학번 : " + getStudentID());
System.out.println("학년 : " + getGrade());
System.out.println("학점 : " + getGPA());
}
}
이제 Main클래스에서 작업을 해봅시다.
Student클래스라는 틀을 이용해서 이렇게 하나의 student 변수를 생성할 수 있습니다.
변수는 여러개를 생성할 수 있습니다.
해당 변수를 show함수를 이용하여 정보를 깔끔하게 출력할 수 있습니다.
내가 만든 정보들이 틀에 맞춰서 출력됩니다.
이렇게 각각의 변수들을 만들고 개별적으로 관리할 수 있습니다.
Main함수는 짧아졌고 실제로 어떤 함수들을 사용하기만 합니다.
Person클래스와 Student클래스는 틀을 명시해 놓을 뿐이고 실제로 사용하게 되는 클래스는 Main클래스일 뿐입니다.
즉, 이것이 바로 '상속'입니다.
'상속'을 통해 간단하게 상속 받은 클래스들을 이용해서 각각의 변수를 만들고 정보를 체계적으로 관리하는 등의 활용을 할 수 있는 것입니다.
코딩에서 이러한 상속을 이용해서 활용을 하면 객체지향의 장점인 '개별적인 특성을 세부적으로 나누어 관리하는 기법'을 느낄 수 있습니다.
'。*:・゚☆・゚schedule・゚*:・゚★・:*:・☆ *:・゚★ > 활용해본 코드 적용 예시 (◍•ᴗ•◍)❤' 카테고리의 다른 글
[JAVA] 추상 (1) | 2023.10.06 |
---|---|
[JAVA] 상속 Ⅱ (0) | 2023.10.05 |
[JAVA] Java 객체지향프로그래밍 (클래스) (0) | 2023.10.05 |
[JAVA] 자바 문자열 자르기 (substring) (1) | 2023.10.04 |
[JAVA] 스트림(stream)이란 무엇인가? (코딩테스트 활용 내용 부분 정리) (1) | 2023.10.04 |