자바 개념 정리

김민지·2022년 8월 28일
0

자바

목록 보기
1/21

오버로딩

  • 매개변수의 타입이나 수로 중복해서 함수를 정의할 수 있는 것

오버라이딩

  • 부모로부터 상속받은 매서드를 자식객체가 재정의할 수 있는 것

한 생성자에서 다른 생성자 호출

  • 반드시 첫 줄에서만 호출이 가능하다.
  • 클래스가 생성되기 이전에 다른 코드가 있다면 문제가 발생할 수 있기 때문이다.
    상속 관계가있는 클래스가 둘 이상있는 경우super 키워드를 사용하여 자식 클래스에서 부모 클래스 생성자를 호출해야합니다

final과 static의 차이

  • final : 객체 생성 없이 사용할 수 있는 필드와 메소드를 생성하고자 할 때 활용한다.
  • static : 상수 값을 만들고 싶을 때
  • static final : 모든 영역에서 고정된 값으로 사용하는 상수

abstact

  • 추상메서드 : 자식클래스에서 반드시 오버라이딩 해야하는 메서드
  • 추상클래스 : 하나 이상의 추상 메소드를 포함하는 클래스
  • 추상 클래스는 동작이 정의되어 있지 않은 추상 메소드를 포함하고 있으므로, 인스턴스를 생성할 수 없습니다. 추상 클래스는 먼저 상속을 통해 자식 클래스를 만들고, 만든 자식 클래스에서 추상 클래스의 모든 추상 메소드를 오버라이딩하고 나서야 비로소 자식 클래스의 인스턴스를 생성할 수 있게 됩니다.
abstract class Animal { abstract void cry(); }

class Cat extends Animal { void cry() { System.out.println("냐옹냐옹!"); } }

class Dog extends Animal { void cry() { System.out.println("멍멍!"); } }

 

public class Polymorphism02 {
    public static void main(String[] args) {
        // Animal a = new Animal(); // 추상 클래스는 인스턴스를 생성할 수 없음.

        Cat c = new Cat();
        Dog d = new Dog();

        c.cry();
        d.cry();
    }
}
  • 추상메서드의 사용 목적 : 자식클래스가 반드시 해당 메서드를 구현해야할 때

instanceof 연산자

  • 객체 타입을 확인하기 위한 연산자 입니다.
  • 형변환이 가능한지 불가능한지 여부를 boolean으로 알려줍니다.
		System.out.println( parent instanceof Parent );  // true
        System.out.println( child instanceof Parent );   // true
        System.out.println( parent instanceof Child );   // false
        System.out.println( child instanceof Child );   // true
  • 형변환이 불가능한 즉 타입이 상위클래스도 하위클래스도 아닐경우에는 에러가 난다.

인터페이스

  • 동일한 목적 하에 동일한 기능을 수행하게끔 강제하는 것
public interface 인터페이스명 { 

//상수

타입 상수명 =;


//추상 메소드

타입 메소드명(매개변수, ... );

 
 //디폴트 메소드

default 타입 메소드명(매개변수, ... ){//구현부}

//정적 메소드

static 타입 메소드명(매개변수) {//구현부}


}
  • 상수 : 인터페이스에서 값을 정해줄테니 함부로 바꾸지 말고 제공해주는 값만 참조해라 (절대적)
  • 추상메소드 : 가이드만 줄테니 추상메소드를 오버라이팅해서 재구현해라. (강제적)
  • 디폴트메소드 : 인터페이스에서 기본적으로 제공해주지만, 맘에 안들면 각자 구현해서 써라. (선택적)
    -> 이미 운영되고 있는 시스템에서 추가 요건으로 인해 불가피하게 반영을 해야할 때 디폴트메소드를 쓰면 효과적
    -> 추가요건에 대한 대처를 할 수 있도록 유연성을 확보
  • 정적메소드 : 인터페이스에서 제공해주는 것으로 무조건 사용 (절대적)

추상클래스와 인터페이스

  • 추상클래스 : 추상 메서드를 선언하여 상속을 통해서 자손 클래스에서 완성하도록 유도하는 클래스입니다. 그래서 미완성 설계도라고도 표현합니다. 상속을 위한 클래스이기 때문에 따로 객체를 생성할 수 없습니다.
  • 인터페이스 : 추상클래스가 미완성 설계도라면 인터페이스는 기본 설계도라고 할 수 있습니다. 인터페이스도 추상클래스처럼 다른 클래스를 작성하는데 도움을 주는 목적으로 작성하고 클래스와 다르게 다중상속(구현)이 가능

추상클래스와 인터페이스의 차이점

  1. 사용의도
  • 추상클래스는 IS - A "~이다".
  • 인터페이스는 HAS - A "~을 할 수 있는".

출처 :
https://www.delftstack.com/ko/howto/java/java-call-another-constructor/
https://gobae.tistory.com/3
http://www.tcpschool.com/java/java_polymorphism_abstract
https://mine-it-record.tistory.com/120
https://limkydev.tistory.com/197
https://myjamong.tistory.com/150

profile
안녕하세요!

0개의 댓글