본문 바로가기

Java

상속, 오버라이딩, 오버로딩

상속은 기존의 클래스를 재사용하는 방법중의 하나이다. 상속은 다음과 같은 특징을 가진다.

  1. 부모 클래스로에서 정의된 필드와 메소드를 물려 받는다.
  2. 새로운 필드와 메소드를 추가할 수 있다.
  3. 부모 클래스스에서 물려받은 메소드를 수정할 수 있다.

상속의 형식은 다음과 같다. extends를 쓰면 된다.

class Animal{}
class Dog extends Animal{}
class Cat extends Animal{}

상속의 예제를 써 보았다.

class Animal {
    String name;
    String color;

    public Animal(String name, String color) {
        this.name = name;
        this.color = color;
    }

    public void cry(){
        System.out.println(name + "is crying");
    }
    public void not_swim(){
        System.out.println(name+" is not swimming");
    }
}
    class Dog extends Animal {
        public Dog(String name, String color) {
            super(name,color);
        }
        @Override
        public void cry(){
        System.out.println(name + " is barking");
    }

        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 = new Dog("미미","점박이");
        dog2.cry();
        dog2.swim();//컴파일 에러
        dog2.not_swim();
    }
}

오버라이딩

오버라이딩은 상속받은 메소드의 내용을 변경하는 것이다 

오버라이딩의 조건은 다음과 같다.

1.부모 클래스의 메소드와 매개변수가 같아야 한다.

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

3.부모 클래스의 메소드와 이름이 같아야 한다.

위 예제에서 Animal 클래스와 Dog 클래스 모두 cry메소드가 들어있지만 Dog 클래스의 cry메소드가 실행이 된다. 이것을 오버라이딩이라고 한다.

오버로딩

오버로딩이란 한 클래스 내에 동일한 이름의 메소드를 여러개 정의하는 것이다.

오버로딩의 조건은 메소드의 이름이 동일해야 하고, 매개변수의 개수 혹은 타입이 달라야 한다.

다음은 오버로딩의 예제이다.

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;
}

오버로딩의 조건중에 매개변수의 개수 혹은 타입이 달라야 하는 이유는 당연한 말이겠지만 매개변수의 개수 혹은 타입이 같으면 기존의 메소드와 다를게 없기 때문이다. 그냥 기존의 메소드를 쓰면 된다.

 

'Java' 카테고리의 다른 글

예외,에러 처리  (0) 2022.11.15
인터페이스  (0) 2022.11.14
추상클래스  (0) 2022.11.14
접근 제어자  (0) 2022.11.14
조건문(1)  (0) 2022.10.18