///////
Search
😋

상속

김하늘_0926

자식 클래스가 부모 클래스의 기능을 그대로 물려받을 수 있는 기능이다. 기존에 있는 것을 재사용 하기 위한 것을 문법적으로 제공된다.
상속을 사용하게 되면 중복되는 코드를 줄이기 가능 하다. 이미 존재하는 클래스의 필드와 메소드를 재사용 가능하기 때문이다.
상위 클래스를 부모 클래스라고도 하며, 하위 클래스를 자식 클래스라고 하기도 한다.
상속을 위해서는 extends 키워드를 사용한다.
상속 예시
public class Car { int speed; public void setSpeed(int speed){ this.speed = speed; } } public class SportsCar extends Car { boolean turbo; public void setTurbo(boolean flag) { turbo = flag; } } public class SportsCarTest { public static void main(String[] args) { SportsCar obj = new SportsCar(); obj.speed = 10; //부모 필드 사용 obj.setSpeed(60); //부모 메소드 사용 obj.setTurbo(true); //자식 자체 메소드 사용 } }
Java
복사
Car : 상위 클래스 (부모 클래스)
SportsCar : 하위 클래스 (자식 클래스)
부모의 필드 speed를 갖고 있고, 추가적으로 turbo를 갖고있다.

상속과 생성자

서정희_0926

자식 클래스를 생성시 생성자의 호출 순서는
부모 클래스의 생성자→자식 클래스의 생성자 순이다.
이유: 자식 클래스 객체 안에 부모 클래스에서 상속된 부분이 들어있기 때문에 자식 클래스 안의 부모 클래스 부분을 초기화하기 위해서
부모클래스 생성자 호출
public class Parent { public Parent() { System.out.println("부모 생성자"); } } public class Child extends Parent{ public Parent() { //super(); //....1 super(); //...2 System.out.println("부모 생성자"); } }
Java
복사
1번과 같이 super();을 작성하지 않아도 컴파일러는 부모클래스의 기본 생성자를 자동으로 호출함.
따라서 1번과 2번 방법 모두 동일하게 작동된다.
부모클래스 생성자 선택
인수 형태에 따라 부모 클래스의 생성자가 정해진다.
super(x,y) 는 인수의 형태에 따라 public TwoDimPoint(int x, int y)를 생성자로 택하게 된다.
Java
복사
오류가 발생하는 경우
위와 같이 클래스에 기본 생성자 없이 다른 생성자가 선언 된 경우에는 컴파일러가 클래스 생성 시 기본 생성자를 자동으로 만들어주지 않기 때문에 오류가 발생하게 된다.
따라서 기본 생성자를 선언해주는 것으로 위와 같은 오류를 해결할 수 있다.
class TV{ private int size; public TV(int size){this.size=size;} protected int getSize(){return size;} } class ColorTV extends TV{ private int ans; public ColorTV(int size,int ans){ super(size); //...1 this.ans=ans; } public void printProperty(){ System.out.println(super.getSize()+"인치"+ans+"컬러"); } }
Java
복사
부모클래스의 기본 생성자를 선언하지 않더라도 1번과 같이 자식 클래스를 생성시 호출할 부모클래스의 생성자를 기본생성자가 아닌 다른 생성자로 지정하는 방법으로도 오류 해결이 가능하다.