자바는 학습할 내용이 많다 보니 제대로 정리하지 않으면, 놓치는 개념이 많아지기 십상입니다.😂
혼자서도 자바를 공부할 수 있도록 클래스 & 상속과 관련된 자바 용어를 정리하였습니다.
[ctrl + f] 키로 궁금하신 내용을 검색해보시고, 게시물 하단의 링크에서 전체 자바 용어 정리 PDF 파일을 다운로드 받아 활용해보세요!
클래스
✅ 객체(object):
물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고 다른 것과 식별 가능한 것을 말함.
ex) 자동차, 자전거, 책, 사람 / 학과, 강의, 주문 등…
✅ 인스턴스(instance):
클래스로부터 만들어진 객체
*인스턴스 멤버와 정적 멤버:
인스턴스 멤버란 객체(인스턴스)를 생성한 후 사용할 수 있는 필드와 메소드를 말한다. 이들을 각각 인스턴스 필드, 인스턴스 메소드라고 부른다. 정적 멤버는 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말한다. 이들을 각각 정적 필드, 정적 메소드라고 부른다. 정적 멤버는 객체가 아닌 클래스에 소속된 멤버이기 때문에 클래스 멤버라고도 한다.
✅ 생성자(constructor):
new 연산자로 호출되는 특별한 중괄호 블록. 객체 생성 시 객체를 초과하는 역할을 한다. 메소드와 비슷하게 생겼지만, 클래스 이름으로 되어 있고 반환형이 없다. 객체 초기화란 필드를 초기화하거나, 메소드를 호출해서 객체를 사용할 준비를 하
는 것을 말한다.
✅ 싱글톤(Singleton):
전체 프로그램에서 하나의 클래스에 단 하나의 객체만 만들도록 보장해야 하는 경우에 사용하는데, 이 때 생성된 객체를 싱글톤이라고 부른다. 생성자를 호출한 만큼 객체가 생성되기 때문에 클래스 외부에서 new 연산자로 생성자를 호출할 수 없도록 막아야 한다. 생성자 앞에 private 접근 제한자를 붙이고, 필드에 자기 자신의 객체를 static으로 선언하면 된다.
✅ 식별자(identifier):
프로그래밍 언어에서 프로그래머가 변수, 메소드, 클래스 등에 부여하는 이름
✅ 리턴 타입(return type):
메소드가 실행 후 리턴하는 값의 타입. 반환형이라고도 한다. void로 선언된 리턴 값(return value)이 없는 메소드에서도 return문을 사용할 수 있지만 리턴값 없이 사용해야 한다.
✅ 리턴(return):
함수를 실행했던 위치로 돌아가게 하는 것. 리턴값을 가지는 함수는 반드시 리턴할 때 반환하는 값이 있어야 한다.
✅ 메소드 선언부(method signature):
리턴형, 메소드 이름, 매개 변수 선언을 포함하는 것. 영문명 그대로 메소드 시그니처라고도 한다.
✅ 매개변수(parameter):
메소드가 실행할 때 필요한 데이터를 외부로부터 받기 위해 사용. 매개 변수가 필요한 경우가 있고 필요 없는 경우가 있다.
✅ 필드(field):
객체의 데이터*가 저장되는 곳. 생성자와 메소드 전체에서 사용되며 객체가 소멸되지 않는 한 객체와 함께 존재한다.
*데이터: 여기서 데이터는 멤버 변수를 뜻한다.
✅ 상수(constant value):
값을 한 번 저장하면 변경할 수 없는 변수. 상수의 이름은 모두 대문자로 작성하는 것이 관례이다. 서로 다른 단어가 혼합된 이름이라면 언더바( _ )로 단어들을 연결해준다.
static final double EARTH_SURFACE_AREA;
static final double EARTH_RADIUS = 6400;
static {
EARTH_SURFACE_AREA = 4 * MATH.PI * EARTH_RADIUS * EARTH_RADIUS;
}
…
EARTH_SURFACE_AREA = 10; //에러!
✅ 접근 제한자(access modifier):
객체의 필드와 메소드의 사용 범위를 제한하여 외부로부터 보호한다. 캡슐화된 멤버를 노출시킬 것인지, 숨길 것인지를 결정하기 위해 접근 제한자를 사용한다.
*GETTER와 SETTER
외부에서 마음대로 읽고 변경할 수 없도록 제어하는 메소드. 필드에 직접 접근하지 않고 데이터를 조회, 수정할 수 있도록 하는 역할을 한다. 만약 외부에서 필드값을 읽을 수만 있고 변경하지 못하도록 하려면(읽기 전용) Getter 메소드만 선언하거나, 아니면 Setter 메소드를 필요에 따라
private 혹은 protected 접근 제한을 갖도록 선언하면 된다.
▶ 함께 읽어보면 좋은 콘텐츠: 자바 접근 제한자의 종류와 차이(public, protected, private)
✅ 오버로딩(overloading):
오버로딩의 사전적 의미는 많이 싣는 것을 뜻한다. 하나의 메소드 이름으로 여러기능을 담는다 하여 붙여진 이름이라 생각할 수 있다.
- 메소드 오버로딩: 클래스 내에 같은 이름의 메소드를 여러 개 선언하는 것. 매개 변수의 타입, 개수, 순서 중 하나가 달라야 한다.
- 생성자 오버로딩: 매개 변수를 달리하는 생성자를 여러 개 선언하는 것.
*연산자 오버로딩: 자바에서는 지원하지 않지만 C++과 같은 언어에서는 연산자도 오버로딩하여 사용할 수 있다.
✅ 타입 변환:
자료 타입을 다른 자료 타입으로 변환하는 것.
- 자동 타입 변환: 프로그램 실행 도중에 자동적으로 타입 변환이 일어나는 것을 말한다.
Animal animal1 = new Cat();
*animal1은 Cat으로 자동 타입 변환
- 강제 타입 변환casting: 프로그래머가 강제적(명시적)으로 타입을 변환하는 것을 말한다.
float f1 = 1.23F;
int n1 = (int)f1; //n1에 1 저장
int n2 = f1; //자료형 불일치로 에러
상속
✅ 상속(inheritance):
상위(부모) 객체를 기반으로 하위(자식) 객체를 생성하는 관계를 말한다. 상위 객체는 자기가 가지고 있는 필드와 메소드를 하위 객체에게 물려주어 하위 객체가 사용할 수 있도록 한다. 일반적으로 상위 객체는 종류를 의미하고, 하위 객체는 구체적인 사물에 해당한다. 자식 클래스를 선언할 때 어떤 부모 클래스를 상속받을 것인지 결정한다.
- 부모(parent class, super class / 상위 클래스): 해당 클래스에 선언된 변수와 함수를 물려주는 클래스
- 자식(child class, sub class / 하위 클래스): 다른 클래스로부터 물려받고자 하는 클래스
✅ 오버라이딩(overriding):
부모에게서 상속받은 메소드의 내용이 자식 클래스에 맞지 않을 경우, 자식 클래스에서 동일한 메소드를 재정의하는 것을 말한다.
✅ 다형성(polymorphism):
같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질을 말한다. 코드 측면에서 보면 다형성은 하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 이용할 수 있도록 해준다.
✅추상 클래스(abstract class):
실체 클래스가 공통적으로 가져야 할 필드와 메소드들을 정의해 놓은 추상적인 클래스. 추상 클래스는 실체 클래스의 공통되는 필드와 메소드를 추출해서 만들었기 때문에 객체를 직접 생성해서 사용할 수 없다.
✅추상 메소드(abstract method):
하위 클래스가 반드시 오버라이딩하도록 하고 싶은 경우 사용하는 메소드. 메소드의 선언부만 있고 메소드 실행 내용인 중괄호가 없다. 추상 메소드는 추상 클래스 안에서만 선언 가능함.
Animal animal1 = new Cat();
Animal animal2 = new Dog();
animal1.sound(); //야옹
animal2.sound(); //멍멍
지금까지 자바의 클래스와 상속에서 쓰이는 용어에 대해 알아보았습니다.
<혼자 공부하는 자바>의 부록인 ‘혼공 용어 노트‘에서 전체 내용을 확인하실 수 있습니다.
프로그래밍 초보자 사이에서 입소문이 자자한 자바 기초 도서!
입문자 맞춤형 체계적인 반복 학습과 245개의 예제로 실전 감각을 기를 수 있어 프로그래밍이 처음인 사람부터 복습을 원하는 전공생까지 볼 수 있는 도서입니다.
Leave A Comment