상속 예제1
- Calculator를 하위 클래스 Substract-가 확장extend(=상속)하고 있어서 Sub 얘도 Cal의 것들을 사용할 수 있다.
- 상속을 통해서 코드의 중복을 제거할 수 있었고, 또 부모 클래스을 개선하면 이를 상속받고 있는 모든 자식 클래스들에게 그 혜택이 자동으로 돌아간다. 다시 말해서 유지보수가 편리해진다는 것이다. (출처 생활코딩)
class Calculator {
int left, right;
public void setOprands(int left, int right) {
this.left = left;
this.right = right;
}
public void sum() {
System.out.println(this.left + this.right);
}
public void avg() {
System.out.println((this.left + this.right) / 2);
}
}
class SubstractionableCalculator extends Calculator {
public void substract() {
System.out.println(this.left - this.right);
}
}
public class CalculatorDemo1 {
public static void main(String[] args) {
SubstractionableCalculator c1 = new SubstractionableCalculator();
c1.setOprands(10, 20);
c1.sum();
c1.avg();
c1.substract();
}
}
상속 예제2 (추가된)
자식 1
class MultiplicationableCalculator extends Calculator {
public void multiplication() {
System.out.println(this.left * this.right);
}
}
public class CalculatorDemo2 {
public static void main(String[] args) {
MultiplicationableCalculator c1 = new MultiplicationableCalculator();
c1.setOprands(10, 20);
c1.sum();
c1.avg();
c1.multiplication();
}
}
자식1의 자식
class DivisionableCalculator extends MultiplicationableCalculator {
public void division() {
System.out.println(this.left / this.right);
}
}
public class CalculatorDemo3 {
public static void main(String[] args) {
DivisionableCalculator c1 = new DivisionableCalculator();
c1.setOprands(10, 20);
c1.sum();
c1.avg();
c1.multiplication();
c1.division();
}
}
@ 학원 예제
- 자식 클래스는 부모 클래스에서 물려받은 멤버를 그대로 사용하거나,
- 변경할 수 있고, 새로운 멤버로 추가할 수 있다. = 메소드 오버라이딩 method overriding
- 근데, 오버라이딩 불가
- private 메소드: 부모클래스 전용이므로 자식클래스에 상속 못됨
- static 메소드: 클래스소속이라 자식클래스에 상속되지 않는다.
- final 메소드: 더 수정 못하니까 당연히 자식클래스가 오버라이딩 못함
class 자식클래스이름 extend 부모클래스이름{
// 필드
// 메소드
}
예제1
package day1;
public class Box {
public Box() {}
public Box(int size) {
this.size = size ;
System.out.println("Box기본생성자");
}
}
package day1;
public class ColorBox extends Box {
public ColorBox() {
System.out.println("ColorBox 기본생성자");
}
public ColorBox(int a) {
super();
System.out.println("ColorBox매개변수생성자");
}
}
package day1;
public class ColorBoxDemo {
public static void main(String[] args) {
ColorBox cb = new ColorBox(0) ;
}
}