클래스와 객체

Life is ninanino·2022년 9월 17일
0

JAVA

목록 보기
7/15

OOP(Object Oriented Programming)
1.캡슐화 : 데이터를 캡슐화(은닉화)함으로써, 상황에 따라 프로그램 외부에서 접근 가능한 데이터를 지정할 수 있다.
2.추상화 : OOP에서 제공하는 함수/데이터 모듈화의 일종으로써, 객체의 기본적인 틀, 즉 뼈대만 미리 만들어놓을 수 있는 기능이다
3.상속 : OOP에서 제공하는 함수/데이터 모듈화의 일종으로써, 피상속 객체(부모 클래스)의 데이터 및 함수들을 상속 객체로 그대로 이어 받아 사용할 수 있는 기능이다
4.다형성 : OOP의 4가지 특징 중 가장 어려운 내용. 객체가 다양한 형태로 표현될 수 있다는 개념. 추상화된 객체와 같이 "틀"을 가진 객체가 구체화된 객체로 표현가능하다 라는 뜻

클래스는 사용자가 직접 정의하여 사용할 수 있는 자료형.
클래스와 기본 자료형은 형태의 차이점을 갖지만 '형식과 사용 방법을 명시한 실체 없는 틀'이라는 공통점을 갖고 있기 때문에, 자료형과 변수가 항상 짝꿍을 이루는 것 처럼 클래스 또한 객체와 짝꿍을 이룬다.
'객체'는 '클래스'라는 자료형으로 만들어진 변수. 클래스는 객체가 선언되었을 때 실체를 가지게 되며, 객체를 통한 클래스에 포함된 다양한 데이터를 다룰 수 있다.

클래스(=붕어빵 틀), 객체(=붕어빵)
1. 붕어빵 틀 없이 붕어빵이 만들어질 수 없고, 붕어빵 틀은 붕어빵을 만들지 않으면 쓸모없는 도구가 된다
= 클래스 없이 객체를 만들 수 없고, 클래스는 객체를 만들지 않으면 쓸모없는 도구가 된다
2. 붕어빵 틀을 사용하기 위해 재료와 사용 메뉴얼을 필요로 하며, 만들 수 있는 붕어빵은 초코,슈크림,팥 등 다양하다
= 클래스는 멤버 변수와 멤버 메소드로 구성될 수 있으며, 객체는 동일한 틀을 가지나 틀 안에 포함된 내용이 다를 수 있다.

동일한 클래스로 선언된 객체들의 형식과 규칙은 동일하나 데이터 내용이 다를 수 있다.

멤버(Member)
멤버란 클래스를 구성하는 요소. 클래스 내부의 변수를 "멤버 변수"라고 칭한다.

생성자(Constructor)
생성자는 사용자가 객체를 생성할 때 자동으로 호출되는 메소드이다.

생성자는 return형을 사용하지 않으며 클래스와 동일한 이름을 가져야한다.
매개변수가 존재하지 않는 생성자를 "기본 생성자"리고 부른다.
이것은 매개변수를 포함한 생성자 또한 만들 수 있따는 것을 뜻한다. 이 때 주의할 점은 클래스 안에 매개변수가 들어간 생성자만 정의했다면 객체에 메모리를 할당할 때 생성자에 포함된 매개변수 또한 잊지말고 입력해주어야한다.
생성자는 보통 멤버 변수들의 초기화 및 객체의 복사와 같은 역할로 사용된다.

접근제한자
OOP의 4가지 특징 중 캡슐화를 가장 잘 표현할 수 있다.
접근제한자는 멤버 변수 및 메소드를 선언할 때 사용하며 접근제한자를 통해 멤버 변수 및 메소드를 공개하는데 있어서 제약을 걸 수 있다.

private 접근제한자는 객체 자기 자신 안에서만 사용할 수 있도록 제한하는 구문
private 및 public을 통해 외부에서 접근 가능한 멤버를 설정해 줄 수 있고, 이는 정보은닉의 효과 및 중요 정보의 보안성을 높여주는 방법으로 사용된다.

static
만약 클래스 안의 멤버에 static이 붙으면 그 멤버는 클래스의 객체를 선언하지 않고 바로 콜해서 사용할 수 있다.
static이 붙은 멤버들은 프로그램이 시작될 때 우선 메모리에 할당되기 때문에 new를 통한 객체 초기화가 필요없다.
main메소드에 static이 붙는 이유는 main메소드보다 빨리 실행될 수 있는 코드가 없기 때문에 static을 사용하지 않으면 main메소드의 메모리를 할당해줄 부분이 존재하지 않는다.
때문에 프로그램 시작과 함께 main메소드의 메모리를 할당해야한다.
static을 사용할 때 클래스 내에서 static을 사용하는 메소드는 멤버변수 사용 시 static 멤버변수만 사용가능 하다는 점을 주의.

profile
백엔드 프로그래밍을 공부하고 있습니다. AWS, 클라우드 환경에 대해 관심이 많습니다.

0개의 댓글