🐣생활코딩 강의🐣
Java 상속
https://www.youtube.com/playlist?list=PLuHgQVnccGMA1bRSk_SZrXMngx5iq03cc
- 계산기 예제
→ 부모 클래스 : Cal
→ 자식 클래스 : Cal2
Extends, Overriding, Overloading, Super 사용하기
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; 과 같은 효과
// this 는 자기 자신을 가리킴
return this.sum(v1, v2) + v3;
}
}
class Cal2 extends Cal {
// overriding : 부모가 가진 기능을 재정의 (덮어쓰기)
public int sum(int v1, int v2) {
System.out.println("Cal2!!");
// return v1 + v2; 과 같은 효과
// 부모 클래스의 sum 을 가리키게 됨
return super.sum(v1,v2);
}
public int minus(int v1, int v2) {
return v1 - v2;
}
}
public class Main {
public static void main(String[] args) {
Cal c = new Cal();
System.out.println(c.sum(2,1));
System.out.println(c.sum(1,2,3));
Cal2 c2 = new Cal2();
System.out.println(c2.sum(2,1));
System.out.println(c2.minus(2,1));
}
}
· Extends
class Cal2 extends Cal { ... }
➡️ Cal2 클래스가 Cal 클래스를 확장시킨다 (상속받는다)
· Overriding
class Cal {
public int sum(..) {..}
}
class Cal2 extends Cal {
public int sum(..) {..}
}
➡️ 부모 클래스인 Cal 이 가진 sum 메소드를 자식 클래스인 Cal2 에서 다시 정의한다
· Overloading
class Cal {
public int sum(int v1, int v2) { return v1 + v2; }
public int sum(int v1, int v2, int v3) { return v1 + v2 + v3; }
}
➡️ 한 클래스 내에서 이름이 같은 sum 메소드를 다른 매개변수 타입 혹은 개수로 정의한다
· Super
class Cal2 extends Cal {
public int sum(..) { return super.sum(v1,v2); }
}
➡️ 자식 클래스인 Cal2 에서 부모 클래스인 Cal 의 sum 메소드를 호출하게 된다
생성자, this 사용하기
class Cal {
int v1, v2;
Cal(int v1, int v2) { // 생성자
System.out.println("Cal init!!");
this.v1 = v1;
this.v2 = v2;
}
// this : 자기 자신 가리키기
public int sum() {return this.v1+v2;}
}
class Cal2 extends Cal {
Cal2(int v1, int v2) {
super(v1, v2); // 부모 클래스의 생성자 호출
System.out.println("Cal2 init!!");
}
public int minus() {return this.v1-v2;}
}
public class Main {
public static void main(String[] args){
Cal c = new Cal(2,1);
Cal2 c2 = new Cal2(2,1);
System.out.println(c2.sum()); // 2
System.out.println(c2.minus()); // 1
}
}
'Spring > JAVA' 카테고리의 다른 글
Java 제어문1 - Boolean, 비교&논리 연산자 (0) | 2023.10.04 |
---|---|
Java Interface (0) | 2023.10.03 |
Java 객체 지향 프로그래밍 (2) | 2023.09.29 |
Java Method (0) | 2023.09.28 |
Java 예외 (Try-Catch / Try-Catch-Finally / Try with Resource Statements / Throws) (0) | 2023.09.26 |