상속이란, 기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것.
기존에 정의되어 있는 클래스의 모든 필드와 메소드를 물려받아서 새로운 클래스를 생성할 수 있다.
기존의 정의된 클래스는 부모 클래스, 상위 클래스 라고함.
새롭게 정의된 클래스는 자식 클래스, 하위 클래스 라고함.
Car를 상속받은 Bus를 class로 표현
public class Car{ } public class Bus extends Car{ }
부모클래스에 메소드 추가하기
1) Car에 run() 메소드 추가public class Car{ public void run(){ System.out.println("달리다."); } }
2) Car를 상속받은 Bus 사용
public class BusExam{ public static void main(String args[]){ Bus bus = new Bus(); bus.run(); //Bus class 는 아무런 코드를 가지지 않는다. 그럼에도 run 이라는 메소드를 사용하는데 문제가 발생되지 않는다. } }
3) Bus에 메소드 추가
public class Bus extends Car{ public void ppangppang(){ System.out.println("빵빵"); } }
예제
class Parent { int a = 10; } class Child extends Parent { void display() { System.out.println(a); System.out.println(this.a); System.out.println(super.a); } } public class Inheritance02 { public static void main(String[] args) { Child ch = new Child(); ch.display(); } }
예제
class Parent { int a; Parent() { a = 10; } Parent(int n) { a = n; } } class Child extends Parent { int b; Child() { ① //super(40); b = 20; } void display() { System.out.println(a); System.out.println(b); } } public class Inheritance04 { public static void main(String[] args) { Child ch = new Child(); ch.display(); } }
부모클래스의 메소드를 자식클래스에서 재정의.
예제
public class Bus extends Car { public void run(){ System.out.println("차가 달리면서 다음 정거장을 안내합니다."); } }
public class Car { public void run() { System.out.println("차가 달립니다."); } public void stop() { System.out.println("차가 멈춥니다."); } public void horn() { System.out.println("경적을 울립니다."); } }
class BusExam { public static void main(String [] args) { Bus bus = new Bus(); bus.run(); } }