[JAVA] 상속 - 1

김나영·2022년 8월 1일
1

상속관계의 객체 생성

  • 서브클래스의 객체 생성

    • 서브클래스의 객체는 슈퍼클래스의 메소드를 사용할 수 있음
    • 서브클래스의 객체를 생성할 때 슈퍼클래스의 객체가 먼저 생성됨

    생성자가 만들어지지 않은 상태는 super(); 생략 가능
    생성자가 만들어진 디폴트형태가 아닌 상태는 super(); 통해 직접 호출 필요

    매개변수가 있는 상태에서 상속을 진행하면 오류발생
    → 생성자 호출 진행 필요

슈퍼클래스의 생성자 키워드 : super

생성자만드는 메뉴

  • 연습문제
    학교 다니면서 도서관에서 아르바이트를 하는 학생이 있다.
    클래스 Alda
    필드 String company;

생성자 호출
new Alba("jessica", "seoul univ", "library");
getName() getSchool() getCompany()

 private String company;	
	public Alba(String name, String school, String company) {
		super(name, school);
		this.company = company;
	}
	public String getAlba() {
		return company;
	}
	public void setAlba(String alba) {
		this.company = company;
	}	   

메소드 오버라이딩 ( Method Overriding)

  • 메소드 덮어쓰기
  • 슈퍼클래스의 메소드를 서브클래스에서 재정의하는 것
  • 슈퍼클래스의 메소드를 서브클래스가 사용하지 못하는 경우 메소드 오버라이딩이 필요
  • 반드시 슈퍼클래스의 메소드와 동일한 원형 (반환타입, 메소드명, 매개변수)으로 만들어야 함
  • 오버라이드 된 메소드 앞에는 @Override 애너테이션을 작성해서 오버라이드 된 메소드임을 알림

-연습문제
에스프레소에 extraWater를 추가하면 Americano
에스프레소에 milk를 추가하면 CafeLatte
각 taste() 작성

public class Americano extends Espresso {
	private int extraWater;
	@Override
	public void taste() {
		System.out.println("덜 쓰다");
	}
}
public class CafeLatte extends Espresso{
	private int milk;
	@Override
	public void taste() {
		System.out.println("부드럽다");
	}
}

* override 방법

ctrl + space

** TODO : 해야 할 일을 적어둠

**생성자 호출방법

-연습문제
너비, 높이가 서로 다른 직사각형 (Rectangle)
너비, 높이가 서로 같은 정사각형 (square)
각각의 getArea(), info() 만들어 호출하기


profile
응애 나 애기 개발자

0개의 댓글