// 배열로 한번에 관리하기
Vehicle[] vehicles = new Vehicle[] { new Bike(), new Car(), new MotorBike()};
for (Vehicle vehicle : vehicles) {
vehicle.run();
}
// 출력값
Bike is running
Car is running
MotorBike is running
super 키워드는 상위 클래스의 객체, super()는 상위 클래스의 생성자를 호출하는 것을 의미한다.super은 상위 클래스의 멤버와 자신의 멤버를 구별하는 데 사용된다.super()은 생성자 안에서만 사용이 가능하고, 반드시 첫 줄에 와야한다.class ParentEx { // 컴파일러가 "extends Object" 자동 추가
}
class ChildEx extends ParentEx {
}
.으로 한다.// 패키지를 생성했을 때
package practicepack.test; // 패키지 구문 포함. 패키지가 없다면 구문 필요없음
public class PackageEx {
}
클래스의 충돌을 방지해주는 역할을 한다.
import문은 다른 패키지 내의 클래스를 사용하기 위해 사용한다.
package practicepack.test2; // import문을 사용하지 않는 경우, 다른 패키지 클래스 사용방법
public class PackageImp {
public static void main(String[] args) {
practicepack.test.ExampleImport example = new practicepack.test.ExampleImport();
}
}
package practicepack.test2; // import문을 사용하는 경우
import practicepack.test.ExampleImp // import문 작성
public class PackageImp {
public static void main(String[] args) {
ExampleImp x = new ExampleImp(); // 이제 패키지명을 생략 가능
}
}
import 패키지명.* 키워드를 써주면 해당 패키지의 모든 클래스를 패키지명 없이 사용가능하다.접근 제어자를 통해 외로부터 데이터를 보호하고, 불필요하게 데이터가 노출되는 것을 방지 할 수 있다.
클래스, 필드, 메서드, 생성자 등에 부가적인 의미를 부여하는 키워드를 의미한다.
자바에서 제어자는 크게 접근 제어자와 기타 제어자로 구분된다.
하나의 대상에 대해서 여러 제어자를 사용할 수 있다.
하지만, 각 대상의 접근 제어자는 단 한번만 사용할 수 있다.
접근 제어자 (Access Modifier)
| 접근 제어자 | 접근 제한 범위 |
|---|---|
| private | 동일 클래스에서만 접근가능 |
| default | 동일 패키지 내에서만 접근가능 |
| protected | 동일 패키지 + 다른 패키지의 하위클래스에서 접근 가능 |
| public | 접근 제한 없음 |

캡슐화의 목적을 달성하면서도 데이터의 변경이 필요한 경우 getter와 setter 메서드를 사용 한다.
데이터를 효과적으로 보호하면서도 의도하는 값으로 값을 변경 가능하다.
setter 메서드 : 외부에서 메서드에 접근하여 조건에 맞을 경우 데이터 값을 변경 가능하게 해주고 일반적으로 메서드명에 set-을 붙여서 정의한다.
getter 메서드 : 설정한 변수 값을 읽어오는 데 사용하는 메서드이다. get-을 메서드명 앞에 붙여서 사용한다.