Backend
home

2024. 7. 16

오버라이딩

자식클래스에서 재정의해서 사용한다.
메소드 오버라이딩을 사용하면, 부모 메소드 대신 자식 메소드가 사용된다.

final

클래스에 final을 붙이면 상속할 수 없는 클래스가 된다.
final 메소드는 오버라이딩 할 수 없다. → 그대로 쓸 수밖에 없다.

타입 변환

클래스도 타입 변환이 있는데, 클래스의 타입 변환은 상속 관계에 있는 클래스 사이에서 발생한다.
자동 타입 변환(Promotion)
자식은 부모의 특징과 기능을 상속받기에 부모와 동일하게 취급할 수 있다.
부모 타입으로 변환한 경우에는 부모 클래스에 선언된 필드와 메소드만 접근할 수 있게 된다.
자식 클래스에서 오버라이딩 된 메소드가 있다면, 오버라이딩된 메소드가 호출된다.
Parents p = new Child();
Java
복사
강제 타입 변환(Casting)
자식 타입은 부모 타입으로 자동 변환되지만, 반대로 부모 타입은 자식 타입으로 자동 변환되지 않는다.
부모 타입 객체를 자식 타입으로 무조건 강제 변환할 수는 없다.
자식 객체가 부모 타입으로 자동 변환된 경우에만 강제 타입 변환을 사용할 수 있다.
Parents p = new Child(); // Child c = (Child) p;
Java
복사

다형성

다형성은 상속(타입 변환)을 전제로, 하나의 객체 타입이 여러 타입을 참조할 수 있는 능력을 의미한다.
동일한 사용방법이지만 다양한 실행 결과를 나타나게 할 수 있다.

instanceof

변수가 참조하는 객체의 타입을 확인하고자 할 때, instanceof 연산자를 이용할 수 있다.
instanceof 연산자의 좌측에는 객체, 우측에는 타입을 기술하면 해당 객체와 타입이 일치하는지 여부를 boolean으로 반환한다.
boolean result = instance instanceof Type;
Java
복사
Java 12부터는 instanceof 연산의 결과가 true일 경우, 우측타입의 변수를 사용할 수있어서 강제타입 변환을 할 필요가 없다.

Object 클래스

Object 클래스는 Java에서 최상위 클래스이다.
즉, Java의 모든 클래스는 Object의 자식이거나 자손 클래스가 된다.
클래스를 생성할 때 명시적으로 extend를 작성하지 않은 경우, 자동으로 Object를 상속받게 된다.
Object 클래스는 다양한 메소드들로 구성되어 있고, 해당 메소드들은 모든 클래스에서 이용할 수 있다.

추상 클래스

사전적 의미의 추상은 실체 간의 공통되는 특성을 추출한 것을 말한다.
추상 클래스는 실체 클래스의 부모 역할을 한다.
추상 메소드
자식 클래스들이 가지고 있는 공통 메소드를 뽑아내어 추상 클래스로 만들 때, 실행 내용이 자식마다 달라지는 경우가 발생할 수 있다.
추상 메소드는 abstract 키워드가 붙고, 메소드 실행 내용이 없는 것이 특징이다.
abstract 리턴타입 메소드명();
Java
복사
package com.oop.abstract1; public abstract class Animal { abstract void sound(); }
Java
복사

인터페이스

다형성 구현에 주로 사용된다.
상속을 통해 다형성을 구현할 수 있지만, 인터페이스를 통해 구현하는 경우가 더 많다.
인터페이스는 public static final 특성을 갖는 불변의 상수 필드만을 가질 수 있다.
package com.oop.interface1 public interface RemoteControl { // 공용 정적 상수 필드 public static final int MAX_VOLUME = 10; int MIN_VOLUME = 0; // public 추상 메소드 /* public * /void turnOn(); } }
Java
복사