본문 바로가기
Java/생활코딩

Java 상속

by k-mozzi 2022. 9. 26.
반응형
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

 

728x90
반응형

'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

댓글