객체지향 프로그래밍: 상속

김수정·2020년 6월 17일
0

Java 언어적 문법

목록 보기
4/8

상속이란?

자식 클래스가 부모 클래스의 필드나 메소드를 그대로 받아서 사용할 수 있게 해줍니다.

public class Animal {
  String name;
  int legs;
  String getInfo() {
    return name + ", " + legs;
  }
}

public class Chicken extends Animal {
  int wings;

  String getInfo() {
    return name + ", " + legs + " legs, " + wings + " wings";
  }
}

override, overload

override - 부모의 기능을 자식 클래스에서 재정의. 위의 상속이란? 부분의 예시는 오버라이드입니다.
overload - 동일한 이름의 메서드를 형식이 다르면 여러개 만들 수 있습니다.

// overload example
class Cal {
	public int sum(int v1, int v2) {
		return v1 + v2;
	}
	public int sum(int v1, int v2, int v3) {
		return v1 + v2 + v3;
	}
}

this, super

this - 자기자신
super - 부모 클래스

class Cal {
	public int sum(int v1, int v2) {
		return v1 + v2;
	}
	public int sum(int v1, int v2, int v3) {
		return this.sum(v1, v2) + v3;
	}
}

class Cal3 extends Cal {

	public int sum(int v1, int v2) {
		System.out.println("Cal3!!!");
		return super.sum(v1, v2);
	}
	
	public int minus(int v1, int v2) {
		return v1 - v2;
	}
}

constructor

부모 클래스의 생성자 함수가 인자를 받고 있다면, 자식 클래스도 그를 받아서 실행을 시켜줘야 로직이 맞아지겠죠.

class Cal {
	int v1, v2;
	Cal(int v1, int v2) {
		System.out.println("cal init!!");
		this.v1 = v1; this.v2 = v2;
	}
}

class Cal3 extends Cal {

	Cal3(int v1, int v2) {
		super(v1, v2); /*******/
		System.out.println("Cal3 init!!");
	}
	
}

public class InheritanceApp {

	public static void main(String[] args) {
		Cal cal = new Cal(2, 1);
		
		Cal3 c3 = new Cal3(2, 1);
	}

}
profile
정리하는 개발자

0개의 댓글