본문 바로가기

JAVA

2022.11.07 TIL 객체지향, 오버라이딩, 오버로딩

수강 진행

자바 기초 1~14강 완료, 15~28강 수강 예정

 

주요 내용

JAVA, IntelliJ 설치

 

 

객체 지향

1) 클래스 

표현하고자 하는 대상의 공통 속성을 정의해 놓은 것

 

2) 인스턴스

클래스로부터 만들어진 객체

ex) Phone galaxy = new Phone();

 

3) 생성자

생성자는 인스턴스가 생성될 때 사용되는 '인스턴스 초기화 메소드'

 

형식

 

클래스이름 (타입 변수명, 타입 변수명, ...){
    인스턴스 생성 될 때에 수행하여할 코드
    변수의 초기화 코드
}

 

  1. 생성자의 이름은 클래스명과 같아야 한다.
  2. 생성자는 리턴 값이 없다.

* alt + insert로 생성자 등 주요 메서드 생성 가능 

 

4) 상속

  • 상속의 특징
    1. 부모 클래스로에서 정의된 필드와 메소드를 물려 받습니다.
    2. 새로운 필드와 메소드를 추가할 수 있습니다.
    3. 부모 클래스스에서 물려받은 메소드를 수정할 수 있습니다.
  • 오버로딩

      한 클래스 내에 동일한 이름의 메소드를 여러개 정의하는 것

       → 메소드 이름이 동일해야 합니다.

       → 매개변수의 개수 혹은 타입이 달라야 합니다.

 

1
2
3
4
5
6
7
8
9
10
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;
}
// 반환타입은 다르지만 매개변수의 자료형과 개수는 같기에 오버로딩이 아닙니다.
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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;
}
// 오버로딩의 조건에 부합하는 예제입니다.
cs
  • 오버라이딩

→ 부모 클래스로부터 상속받은 메소드의 내용을 변경하는 것

→ 상속받은 메소드를 그대로 사용하기도 하지만, 필요에 의해 변경해야할 경우 오버라이딩을 합니다.

 

  • 오버라이딩의 조건

→ 부모 클래스의 메소드와 매겨변수가 같아야 합니다.

→ 부모 클래스의 메소드와 반환타입이 같아야 합니다.

→ 부모 클래스의 메소드와 이름이 같아야 합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Animal {
    String name;
    String color;
 
    public void cry() {
        System.out.println(name + " is crying.");
    }
}
 
class Dog extends Animal {
 
    Dog(String name) {
        this.name = name;
    }
 
    public void cry() {
        System.out.println(name + " is barking!");
    }
}
 
public class Main {
    public static void main(String[] args) {
        Animal dog = new Dog("코코");
        dog.cry();
    }
}
cs
  • 오버로딩 vs 오버라이딩 (비교)오버로딩 : 기존에 없는 새로운 메소드를 정의하는 것 오버라이딩 : 상속받은 메소드의 내용을 변경하는 것

 

기본적이지만 객체지향언어 자체를 관통하는 내용이기도 하고 항상 헷갈리는 내용이라 상당히 의미 깊은 수업이었다.