Preface
이번 강의에선 상속에 대해 공부했다.
파이썬의 상속과 문법만 다를 뿐 동일한 개념이라 쉽게 이해하고 넘어갈 수 있었다.
생활코딩을 통한 자바 공부는 이번 강의를 끝으로 모두 마쳤다.
물론 깊이 있게 공부한 것은 아니지만, 자바라는 언어의 작동 방식 정도는 알 수 있었던 것 같다.
내일부턴 '이것이 자바다' 책을 본격적으로 시작할 생각이다.
1. What is Inheritance?
- 상속(inheritance): 부모 클래스의 모든 메소드, 변수 등을 자식 클래스에서 상속받는 것
1) 재사용성, 가독성, 유지보수의 편의성 등을 높이고, 코드의 양을 줄인다.
2) extends 키워드를 사용한다.
3) 오버라이딩이 가능하다.
class Cal {
public int sum(int v1, int v2) {
return v1 + v2;
}
// Overloading
public int sum(int v1, int v2, int v3) {
return v1 + v2 + v3;
}
}
class Cal3 extends Cal {
public int minus(int v1, int v2) {
return v1 - v2;
}
// Overriding
public int sum(int v1, int v2) {
System.out.println("Cal3!!");
return v1 + v2;
}
}
public class InheritanceApp {
public static void main(String[] args) {
Cal c = new Cal();
System.out.println(c.sum(2, 1));
System.out.println(c.sum(2, 1, 1));
Cal3 c3 = new Cal3();
System.out.println(c3.sum(1, 2));
System.out.println(c3.minus(3, 2));
}
}
- Overriding vs Overloading
1) overriding: 메소드를 자식 클래스에서 재정의하는 것
2) overloading: 동일한 이름의 메소드이지만, 매개변수의 수와 리턴값 등 내부 구조가 다른 것
- this & super
1) this: 자기 자신을 나타낸다.
2) super: 자신의 부모를 나타낸다.
- 생성자(constructor)가 있는 클래스를 상속받을 경우, 자식 클래스에서도 생성자를 만들어 부모 클래스를 호출해야 한다.
class Cal {
int v1, v2;
public Cal(int v1, int v2) {
System.out.println("Cal init!!");
this.v1 = v1;
this.v2 = v2;
}
public int sum() {
return this.v1 + this.v2;
}
}
class Cal3 extends Cal {
public Cal3(int v1, int v2) {
super(v1, v2);
System.out.println("Cal3 init!!");
}
public int minus() {
return this.v1 - this.v2;
}
}
public class InheritanceApp {
public static void main(String[] args) {
Cal c = new Cal(2, 1);
Cal3 c3 = new Cal3(2, 1);
System.out.println(c3.sum()); // 3
System.out.println(c3.minus()); // 1
}
}
출처: https://www.youtube.com/playlist?list=PLuHgQVnccGMA1bRSk_SZrXMngx5iq03cc
Java 상속
www.youtube.com
'Java > 생활코딩' 카테고리의 다른 글
Java 객체 지향 프로그래밍 (0) | 2022.09.25 |
---|---|
Java 메소드 (2) | 2022.09.20 |
Java 제어문 (0) | 2022.09.18 |
Java 입문 수업 (4) (2) | 2022.09.15 |
Java 입문 수업 (3) (0) | 2022.09.12 |
댓글