1. 상속(inheritance) 이란?
- 기존의 클래스를 재사용하는 방식 중의 하나입니다.한 번 작성한 코드가 재사용이 필요하다면, 변경사항만 코드로 작성하므로 상대적으로 적은 양의 코드를 작성할 수 있게 됩니다. 이렇게 코드를 재사용하면, 코드와 클래스가 많아질수록 관리가 용이하다는 장점이 있습니다.
- 상속을 통해 클래스간의 계층구조를 만들게 됩니다.
- 상속의 특징
- 부모 클래스에서 정의된 필드와 메소드를 물려 받습니다.
- 새로운 필드와 메소드를 추가할 수 있습니다.
- 부모 클래스스에서 물려받은 메소드를 수정할 수 있습니다.
class Animal {
String name;
public void cry() {
System.out.println(name + " is crying.");
}
}
class Dog extends Animal {
Dog(String name) {
this.name = name;
}
public void swim() {
System.out.println(name + " is swimming!");
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog("코코");
dog.cry();
dog.swim();
Animal dog2 = dog;
dog2.cry();
// dog2.swim(); // compile error // 부모 타입(Animal)으로 생성할 경우 자식의 변수와 메소드는 사용할 수 없다.
}
}
2. 오버로딩(overloading) 이란?
- 한 클래스 내에 동일한 이름의 메소드를 여러개 정의하는 것
- 오버로딩의 조건
- 메소드 이름이 동일해야 합니다.
- 매개변수의 개수 혹은 타입이 달라야 합니다.
// 오버라이딩 예제
int add(int x, int y, int z) {
int result = x + y + z;
return result;
}
long add(int a, int b, long c) {
long result = a + b + c;
return result;
}
int add(int a, int b) {
int result = a + b;
return result;
}
// 오버라이딩이 아닌 경우
int add(int x, int y, int z) {
int result = x + y + z;
return result;
}
long add(int a, int b, int c) {
long result = a + b + c;
return result;
}
// 반환타입은 다르지만 매개변수의 자료형과 개수는 같기에 오버로딩이 아닙니다.
3. 오버라이딩(overriding) 이란?
- 부모 클래스로부터 상속받은 메소드의 내용을 변경하는 것
- 상속받은 메소드를 그대로 사용하기도 하지만, 필요에 의해 변경해야할 경우 오버라이딩을 합니다.
- 오버라이딩의 조건
- 부모 클래스의 메소드와 매개변수가 같아야 합니다.
- 부모 클래스의 메소드와 반환타입이 같아야 합니다.
- 부모 클래스의 메소드와 이름이 같아야 합니다.
'프로그래밍 > Java' 카테고리의 다른 글
객체지향언어 (4) 추상클레스, 인터페이스 (0) | 2022.05.18 |
---|---|
객체지향언어 (3) 접근제어자 (0) | 2022.05.17 |
객체지향언어 (1) 클래스, 인스턴스, 메소드, 생성자 (0) | 2022.05.17 |
자료형 - Primitive Type(기본 자료형)/ Reference Type(참조 자료형) (0) | 2022.05.16 |
Java - cloud 세팅 ( with. Azul - zulu/InteliJ + encoding설정) (0) | 2022.05.16 |