하나의 객체가 여러 가지 형태를 가질 수 있는 성질
한 타입의 참조변수를 통해 여러 타입의 객체를 참조할 수 있도록 만든 것
➡️ 상위 클래스 타입의 참조변수로 하위 클래스의 객체를 참조
❗️상위 클래스의 멤버보다 하위 클래스의 멤버가 더 많음
➡️ 선언되지 않은 멤버에 접근하게 될 수 있음
➡️ 따라서 하위 클래스 타입의 참조변수로 상위 클래스의 객체를 참조할 수 없음
Person person = new Person();
Programmer programmer = new Programmer();
Person programmer = new Programmer(); // 가능
Programmer person = new Person(); // 불가능
❗️조건
1. 상속 관계
2. 하위 ➡️ 상위 upcasting
: 괄호 생략 가능
3. 상위 ➡️ 하위 downcastiong
: 괄호 명시
Car car = new Car();
Vehicle vehicle = (Vehicle) car; // upcasting -> 괄호 생략 가능
Car car2 = (Car) Vehicle; // downcasting -> 괄호 명시
MotorBike motorBike = (MotorBike) car; // 상속관계 x, 불가능 -> error
참조 변수가 해당 타입으로 캐스팅이 가능한지 여부를 리턴(boolean)
[참조변수] instanceof [타입]
공통적인 속성과 기능을 추출해서 정의하는 것
abstract
키워드를 붙여서 선언// 추상 클래스
abstract class Animal(){
// 추상 메소드
public abstract void sound();
}
// 추상 클래스 Animal을 상속받은 Cat 클래스
class Cat extends Animal {
@Overriding
public void sound(){
System.out.println("야옹");
}
}
// 추상 클래스 Animal을 상속받은 Dog 클래스
class Dog extends Animal {
@Overriding
public void sound(){
System.out.println("멍멍");
}
}
더 이상 값의 변경이 불가능하다는 것을 명시하는 키워드
위치에 따라 의미가 변경됨
위치 | 의미 |
---|---|
클래스 | 변경/확장 ❌ 상속 ❌ |
메서드 | 오버라이딩 ❌ |
변수 | 값 변경 ❌ |
서로 다른 시스템, 장치, 소프트웨어를 연결해주는 장치
❗️내부의 모든 멤버가 상수 필드와 추상 메소드
➡️ public static final
public abstract
➡️ 생략 가능
다중 상속 지원
✔️ 모든 멤버가 정확하게 정의되어 있지 않기 때문에 충돌의 위험이 없음
implements
키워드로 상속
❗️인터페이스를 상속받은 하위 클래스는 모든 멤버를 구현해야 함
public class Example implements Interface1, Interface2 {
public static final int num = 10;
public abstract void sum();
}
어렵다............... 어려워...................나... 체한다...
오늘 check point때 엔지니어님이 추상클래스와 인터페이스에 익숙해질 수 있도록(?) 카페 키오스크 프로그램을 구현하는 것을 보여주셨다.......
근데 마지막엔 거의..... 멍때림,,,, (이걸.... 내가 어떻게..? 프론트로 가고싶단 말은 절대 아님 N E V E R)
일단,
대충 이런 이유로....놓치고.......
한 번 놓치니까 뭘 놓친지도 모르게 되는 기적!
다른 분들이 이해된다고 표현을 많이 해주셔서,,, 나 따위가 감히 이해안된다고 할 수도 없었... ㅠ 글고 내가 멍청한거라서 이해 못했다기보다 그냥 못따라갔다는 표현이 더 정확할 듯... 설명은 잘 해주셨다...
분명 이해는 가는데... 오케이... 여기서 메소드 오케... 오케 당연히 여기서 추상 오키..... 캡슐화? 오케...
.... 근데 이걸 나 혼자 짜라고 하면...? 심지어 그게 내일 실습이라면?.........
^^.......... 빨리 블로깅 마무리하고 오늘 키오스크 프로그램을 혼자서 작성해봐야겠다.....
암울.... 절망....
그렇지만 어쩌겠습니까.. 해내야지.........................................