객체지향 5 __ 상속 / 오버라이딩

쓰옹·2022년 11월 21일
0

📙 Java 잡아🤏

목록 보기
11/25
post-thumbnail

클래스의 상속

  • extends예약어 사용
class B extends A {
	...
}

//예시
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 = new Dog("미미");
        dog2.cry();
        dog2.swim();  /* Compile Error. Animal 
                     클래스로 인스턴스가 생생되어서 
                     Dog클래스에 있는 생성자는 호출 못함.*/  
        }
    }

특징

  • 실제 객체를 만들 때 사용한 자식타입에 있는 함수는
    부모타입의 변수로 사용할 때 호출 불가.
  • 여러 클래스 상속 불가. 부모는 오직 하나

부모를 부르는 예약어

  • super : 참조변수. 부모 클래스의 멤버와 자식 클래스의 멤버 이름이 같을 경우 사용하여 부모 클래스의 멤버에 접근 가능
  • super(): 부모 클래스의 생성자를 호출할 때 사용


오버라이딩(overriding)

  • 상위 클래스에서 정의한 메소드가
    하위 클래스에서 구현할 내용과 맞지 않을 경우
    하위클래스에서 재정의 가능
  • 반환형, 메소드 이름, 매개변수 개수, 매개변수 자료형이 같아야 함
public class Animal {
    String name;

    public void cry() {
        System.out.println(name + "is crying");
    }
}

class Dog extends Animal {
    Dog(String name) {
        this.name = name;
    }

    @Override
    public void cry() {
        System.out.println(name + "is barking");
    }
 }

overloading vs overriding

overloadingoverriding
기존에 없던 새로운 메소드 정의상속 받은 메소드 내용 변경





🧐 reference

박은종, 『Do it! 자바 프로그래밍 입문』, 이지퍼블리싱(주)

profile
기록하자기록해!

0개의 댓글