정적 바인딩 vs 동적 바인딩

바인딩: 컴퓨터 프로그래밍에서 각종 값들이 확정되어 더 이상 변경할 수 없는 구속(bind) 상태가 되는 것.

  • 정적 바인딩:
    • 컴파일, 링크 과정에서 확정되는 바인딩.
    • int a = 1;
  • 동적 바인딩:
    • 프로그램 실행 과정에서 일어나는 바인딩.
    • 메소드 오버라이딩이 해당함.

오버로딩 vs 오버라이딩

  • 오버로딩

    • 같은 이름의 메소드 여러개를 매개변수의 타입과 개수를 다르게 해서 만드는 것.
    • 매개변수의 타입과 개수에 따라 해당하는 메소드가 자동으로 호출됨.
    • 오버로딩을 통해 같은 이름의 메소드가 다양한 매개변수에 대응할 수 있음.
  • 오버라이딩:

    • 슈퍼 클래스의 메소드를 서브 클래스에서 재정의하는 것.
    • 서브 클래스의 인스턴스에서 오버라이딩한 메소드를 호출하면 재정의된 메소드가 동적으로 바인딩됨.
    • 하나의 슈퍼 클래스로 다형성을 구현할 수 있음.

abstract class vs interface

abstract classinterface는 둘 다 객체화 될 수 없고, 슈퍼 클래스로만 활용 가능하다. 또한 둘 모두 Java에서 다형성을 실현하기 위한 도구이다.

abstract 클래스의 경우 필요한 메소드를 최대한 구현해놓고, 서브 클래스에서만 구현할 수 있는 메소드를 추상 메소드로 남겨놓는다. interface의 경우 개발의 틀을 제공해주는 역할을 하며, 오직 추상 메소드만으로 구현해야 한다(default, static 메소드 제외).

@Override

슈퍼 클래스나 인터페이스를 상속받을 때 @Override 를 적어주면 선언하고자 하는 메소드가 오버라이딩이라는 것을 명확히 할 수 있음. 메소드명, 매개변수 개수나 타입 등에서 실수를 방지할 수 있음.

VSCode에서 추상메소드 자동완성

vscode 자바 레드핫 익스텐션에서 구현해야 하는 추상 메소드 자동으로 생성하기

=> 상속받고 아무것도 구현하지 않으면 클래스 이름에 빨간줄 생김. 그 위에서 command + . 단축키 누르면 추상 메소드 자동 생성 옵션이 나옴.

results matching ""

    No results matching ""