A.
하위클래스가 상위클래스를 상속함으로서 상위클래스의 기능까지 확장할 수 있다
-코드의 재사용성을 높힐 수 있다 즉 코드 중복을 줄여준다
-코드의 가독성을 높힌다
-객체간 계층구조 표현에 유용하며 이를 통한 유지보수성도 향상된다
A.
class Cat extends Animal {}
class Animal {}
abstract클래스나 interface상속시 반드시 미구현 부분을 오버라이딩 하여 구현해야 한다
A.
포함은 동등한 계층의 클래스 끼리의 사용, 상속은 상하의 포함관계
-클래스가 다른클래스의 인스턴스를 맴버변수로 사용하는것
-부모클래스가 자식클래스를 물려받는것
A.
super는 상위 객체를 호출하는 키워드
super()는 상위 생성자를 호출하는 키워드
A.
접근제어자와 getter, setter를 사용하여 직접적인 접근을 막아 데이터를 보호하고 은닉 하는것
-객체의 속성과 기능을 하나로 묶고, 외부에서의 접근을 제어하는 것
-내부의 상태를 보호하고 의존성을 줄이며 불필요한 변화를 방지해 유지보수성을 높힘
A.
private 같은클래스
default 같은패키지
protected 같은패키지와 하위클래스
public 모든클래스
Q. private 키워드와 Getter와 Setter를 조합하여 사용할 수 있다.
A.
public class Main {
public static void main(String[] args) {
Drive drive = new Drive("four");
drive.getEngine();
drive.setEngine("five");
drive.getEngine();
}
}
class Drive {
String engine;
public Drive(String engine) {
this.engine = engine;
}
public String getEngine() {
System.out.println("engine :"+ engine);
return engine;
}
public void setEngine(String engine) {
System.out.println("change engine: "+ this.engine + "->" + engine);
this.engine = engine;
}
}
A.
하위클래스의 객체를 상위클래스 매개변수로 호출할 수 있게 함
-같은 코드가 여러 상황에서 다르게 동작하는 능력
-오버로딩 : 같은 이름의 다른시그니처 메서드 생성
-오버라이딩 : 하위클래스내의 메서드의 재 정의
-상속관계의 타입생성, 형변환을 통한 사용
A.
업캐스팅 되있는 객체를 다시 자손클래스로 다운캐스팅하여
자손의 맴버를 사용할 수 있도록 함
-상위 타입으로 선언된 객체를 하위 타입으로 형변환하여 하위 클래스에서 추가로 정의된 메서드나 멤버 변수에 접근하기 위해 사용
A.
형변환 가능여부 확인
A.
클래스의 공통속성, 기능을 뽑아내는것
-객체들 간의 공통점을 찾아서 이를 하나의 개념으로 모델링하는 것
A.
추상메서드를 하나 이상 포함하는 미완성 클래스, 미완성 설계도
A.
추상클래스와 상수만을 포함한 밑그림
A.
다중상속이 가능, 코드의 중복을 줄이고 유지, 보수를 간편하게 해줌
-다중상속 가능, 결합도 감소, 유연성 증가, 표준화(일정한 규칙), 가독성 증가
A.
추상클래스는 단일상속, 인터페이스는 다중상속
추상클래스는 추상메서드를 한개 이상 가짐, 인터페이스는 모든메서드가 추상클래스
추상클래스는 생성자를 가질 수 있음
추상클래스는 인스턴스변수를 가질 수 있지만 인터페이스는 상수와 스태틱 변수만 가능
A.
추상화를 통해 만들어진 상위클래스, 이를 형변환을 통해 목적에 맞는 객체 접근, 수정이 가능하다
-추상화를 통해 만들어진 상위 개념으로부터 하위 객체들을 다형성을 이용해 다룰 수 있으며, 이를 통해 유연하게 객체들을 활용할 수 있습니다.