[Java와 Spring] 추상화와 상속

개발log·2024년 3월 19일

자바와 스프링

목록 보기
3/10
post-thumbnail

abstract 키워드 - 추상 메서드와 추상 클래스

추상 메서드(Abstract Method)

  • 선언부는 있지만 구현부가 없는 메서드
  • 추상 메서드를 하나라도 갖고 있는 클래스는 '추상 클래스'로 선언해야 한다.
  • 추상 클래스는 인스턴스(객체)를 만들 수 없다.(new 사용 불가)
  • 추상 메서드는 하위 클래스에게 메서드의 구현을 강제한다.(오버라이딩 강제)
  • 추상 메서드를 포함하는 클래스는 반드시 추상 클래스여야 한다.

생성자

클래스의 인스턴스, 객체를 만들 때마다 new 키워드를 사용한다.

  • 반환값이 없고 클래스명과 같은 이름을 가진 메서드(객체 생성자 메서드, 생성자)
  • 따로 생성하지 않아도 컴파일 과정에서 기본 생성자는 자바 컴파일러가 자동 생성
  • 인자가 있는 생성자를 하나라도 만든다면 기본 생성자를 만들어 주지 않는다.
  • 클래스 생성자는 존재하지 않음.
동물 뽀로로 = new 동물();// 뒤의 소괄호는 매개변수가 없는 메서드(생성자) 호출

static 블록

  • 클래스가 스태틱 영역에 배치될 때 실행되는 코드 블록

클래서 정보는 해당 클래스가 코드에서 맨 처음 사용될 때

  • 클래스의 정적 속성을 사용할 때
  • 클래스의 정적 메서드를 사용할 때
  • 클래스의 인스턴스를 최초로 만들 때
    ※ 프로그램이 실행될 때 클래스들의 정보들을 static 영역에 로딩하지 않고, 클래스가 처음 사용될 때 로딩하는 이유: 스태틱 영역도 메모리이기 때문에, 최대한 늦게 로딩함으로써 메모리 사용을 최대한 늦추기 위해서이다.

final 키워드

final 키워드가 나타날 수 있는 곳: 클래스, 변수, 메서드

  • 클래스: 상속을 허락하지 않음.
  • 변수: 변경 불가능한 상수(최초 한번만 초기화 가능)
  • 메서드: 오버라이딩 금지

instanceof 연산자

  • 만들어진 객체가 특정 클래스의 인스턴스인지 물어보는 연산자
  • 결과로 true, false를 반환함.
객체참조변수 instanceof 클래스명
___
동물 동물객체 = new 동물();
System.out.println(동물객체 instanceof 동물); //true

package 키워드

이름공간을 만들어주는 역할


interface 키워드와 implements 키워드

인터페이스: public 추상 메서드와 public 정적 상수만 가질 수 있음.

interface Speakable{
	pulbic static final double PI = 3.14159;
    public static final double zeroPoint = 275.15;
    
    public abstract void say();
}

메서드에 public과 abstract, 속성에 public과 static, final을 붙이지 않아도 자바가 알아서 붙여주지만 명확히 작성해주는 것이 좋다.


this 키워드

객체가 자기 자신을 지칭할 때 쓰는 키워드

  • 지역 변수와 속성(객체 변수, 정적 변수)의 이름이 같은 경우 지역 변수가 우선한다.
  • 객체 변수와 이름이 같은 지역 변수가 있는 경우 객체 변수를 사용하려면 this를 접두사로 사용한다.
  • 정적 변수와 이름이 같은 지역 변수가 있는 경우 정적 변수를 사용하려면 클래스명을 접두사로 사용한다.

class 펭귄{
	int var = 10;
    void test(){
    	int var = 20;
        System.out.println(var);//20
        System.out.println(this.var); //10
       
    }
}

super 키워드

상위 클래스의 인스턴스를 지칭하는 키워드
super 키워드로 바로 위의 상위 클래스 인스턴스에는 접근할 수 있지만 상위의 상위 클래스의 인스턴스에는 접근이 불가능하다.(super.super 형태 불가)

profile
나의 개발 저장소

0개의 댓글