1. 상속 (extends 확장)
자동차 => 슈퍼클래스 (바탕이 되는 클래스)
레이싱카 => 서브 클래스 (새로운 클래스)
class RacingCar extends Car{
private int course;
public RacingCar(){
course =0;
}
public RacingCar(int n, double g, int c){
super(n,g) <--슈퍼클래스에 존재하는 2개의 인수를 받는 생성자가 호출되도록 함
course = c;
}
}
this() = 그 클래스의 다른 생성자를 호출
super() = 그 클래스의 슈퍼 클래스 생성자를 호출
2.protected 접근제한자
car 클래스의 맴버가 private로 설정되어있으면 서브클래스에서 접근 불가
그러나car클래스(슈퍼클래스) 멤버가 protected로 설정되어있으면 서브 클래스에서 접근 가능
3.메소드의 경우 슈퍼클래스의 메소드명과 서브 클래스의 메소드명이 같을 경우 서브 클래스에서 새롭게 정의한 메소드가 호출 (오버라이딩)
4.슈퍼 클래스의 변수로 객체
Car car1;
car=new RacingCar(); 이렇게 만들면
car.show(); 메소드 실행시 오버라이딩 됀 서브클래스의 메소드 실행
*java는 객체를 가리키는변수의 클래스에 관계없이 객체 자신의 클래스에 따라 적절한 메소드가호출 (다형성)
5.슈퍼 클래스에 메소드 이름앞에 final을 붙이면 오버라이딩 되지 않도록 함
6.final을 상수 앞에 붙으면 필드 값을 변경 할 수 없음
static final int NUM_TIRE=4; <--필드에 final을 붙이면 값을 변경할 수 없음(상수 라고 함)