TIL

(2024-04-23) 자바 문법 종합반 맴버 , this , 접근제어자 , 오버라이딩 , super , 인터페이스

o_coding 2024. 4. 23. 21:07

맴버

: 맴버는 필드와 메서드를 합쳐서 부른 용어이다. 맴버는 인스턴스 맴버와 클래스 맴버가 있다.

인스턴스 맴버 = 인스턴스 필드 + 인스턴스 메서드

클래스 맴버 = 클래스 필드 + 클래스 메서드

인스터스 맴버는 객체 생성후에 사용할 수있지만 클래스 맴버는 객체 생성 없이 사용가능하다

클래스 맴버는 static을 사용하여 선언한다.

static String company = "GENESIS"; // 자동차 회사 : GENESIS

 

this

:생성자에서 필드변수에 매개변수 값을 대입할 때 매개변수와 필드명이 같은경우 자기자신에게 값을 대입할 수 있기 때문에 this.변수명 을 줘서 인스턴스의 필드변수임을 명시한다.

this()

:해당 인스턴스의 생성자 호출

 

public Car(String model) {
this(model, "Blue", 50000000);
}

public Car(String model, String color) {
this(model, color, 100000000);
}

public Car(String model, String color, double price) {
this.model = model;
this.color = color;
this.price = price;
}

this()를 사용해서 매개변수가 다른 오버로딩 된 생성자를 호출

 

접근 제어자

:접근 제어자는 클래스 내부의 데이터를 보호하기 위해 사용된다. 생성자의 접근 제어자는 클래스의 접근 제어자 와 일치한다. 

public : 제한이 없다.

protected : 같은 패키지 내에서 다른 패키지의 자손 클래스에서 접근 가능

default : 같은 패키지 내에서만 접근 가능

private : 같은 클래스에서만 접근 가능

 

사용가능한 접근 제어자

클래스 : public, default

메서드 & 맴버변수 : public, protected, default, private

지역변수 : 없음

 

오버라이딩

:부모 클래스에서 상속 받은 메서드를 재정의 하는 것

오바라이딩을 하기 위해 만족해야할 것

1. 선언부가 부모클래스의 메서드와 일치해야한다.

2. 접근 제어자를 부모 클래스의 메서드보다 좁은 범위로 변경할 수 없다.

3. 예외는 부모클래스의 메서드보다 많이 선언할 수없다.

 

super

:부모 인스턴스에 접근

public void setCarInfo(String model, String color, double price) {
super.model = model; // model은 부모 필드에 set
super.color = color; // color는 부모 필드에 set
this.price = price; // price는 자식 필드에 set
}

 

인터페이스

:구현해야할 메소드들을 추상적으로 정의 해둔 것이다. 인터페이스를 클래스에 implements 하면 인터페이스에 있는 메소드들을 전부 오버라이딩 해야한다. 일부 메소드만 구현하고싶다면 클래스를 추상 클래스로 변경한다. 인터페이스 끼리 상속이 가능한대 다중 상속도 가능하다.