객체 지향에서 method, class, instance에 대한 개념을 이해했다면 다음에 들을 수업이 이 상속 수업이다.
사실 멀 얼만큼이나 이해했는지는 모르겠지만 일단 국비교육전에 들을 수 있는 것들을 전부 듣고 시작할 예정이다.
먼저 간단한 계산기 프로그램을 아래와 같이 만든다.
class Cal{
public int sum(int v1, int v2) {
return v1+v2;
}
}
public class InheritanceApp {
public static void main(String[] args) {
Cal c = new Cal();
System.out.println(c.sum(2, 1));
}
}
써놓고 보니 진짜 간단한데 과연 이걸 내가 아무것도 안보고 혼자서 쓸 수 있을까? 라는 의문이 든다.
이 영상 끝나면 한번 시도해 봐야겠다.
각설하고 상속을 배워야 하는 이유에 대해서 영상이 설명하고 있으니 나도 예시를 들어가면서 블로깅해야지
class Cal{
public int sum(int v1, int v2) {
return v1+v2;
}
}
// 근데 더하기 말고 빼기 기능도 필요하다고 했을때, 다만 저 Ca1 메소드를 수정할 수 없는 상황이라고 한다면..
class Cal2 {
public int sum(int v1, int v2) {
return v1+v2;
}
public int minus(int v1, int v2) {
return v1-v2;
}
}
public class InheritanceApp {
public static void main(String[] args) {
Cal c = new Cal();
System.out.println(c.sum(2, 1));
}
}
ㅇㄹ만약 Cal 이라는 계산 함수가 그대로 있는데 수정할 수 없는 상황일때. 그리고 더하기 기능뿐만 아니라 빼기 기능을 더해줘야 한다고 했을때
위에 쓰인 코드처럼 수정해 볼 수 있다.
but 문제점은 Cal1 에 있는 더하기 메소드에 오류가 있을때 그걸 복사붙여넣기한 저 Cal2 역시 일일이 바꿔야 한다는점.
그리고 만약에 Cal2 만 있는게 아니라 Cal 100까지 있다면?
개고생 노가다를 하며 코드를 전부 수정해야할것이다.
우리는 그럴려고 코딩을 배우는것이 아니기 떄문에...
class Cal{
public int sum(int v1, int v2) {
return v1+v2;
}
}
class Cal3 extends Cal{
}
public class InheritanceApp {
public static void main(String[] args) {
Cal c = new Cal();
System.out.println(c.sum(2, 1));
}
}
Cal3 뒤에 써준 extends Cal 이라는게 이 메소드는 Cal 이라는 method의 변수와 기능을 상속받고 있다는 뜻이다.
이렇게 써줌으로써 Cal3은 Cal을 상속받고 있는것이다.
그래서 활용해서 써주면 이렇게 된다
class Cal{
public int sum(int v1, int v2) {
return v1+v2;
}
}
class Cal3 extends Cal{
}
public class InheritanceApp {
public static void main(String[] args) {
Cal c = new Cal();
System.out.println(c.sum(2, 1));
Cal c3 = new Cal3();
System.out.println(c3.sum(5, 2));
}
}
짜잔
ㅋ
c3은 Cal3 클래스를 복사한 인스턴스고, Cal3은 Cal을 부모로 하는 자식 클래스이다.
이런식으로 활용하면 오류 수정을 한번에 할 수 있고, 코드를 쓰는 양도 줄일 수 있는것이다.
그래서 상속을 써야하는거다
예아 베이비
'Java > Java 상속' 카테고리의 다른 글
상속과 생성자 (0) | 2020.12.01 |
---|---|
this & super (0) | 2020.12.01 |
Overriding vs Overloading (0) | 2020.12.01 |
Overriding (0) | 2020.12.01 |