[Java] 생성자 constructor
·
🍞 Back-End/Java
- 객체를 생성할 때 new 키워드와 함께 사용 - new Student(); - 생성자는 일반 함수처럼 기능을 호출하는 것이 아니고 객체를 생성하기 위해 new와 함께 호출됨 - 객체가 생성될 때 변수나 상수를 초기화하거나 다른 초기화 기능을 수행하는 메서드를 호출함 - 생성자는 반환 값이 없고, 클래스의 이름과 동일 - 대부분의 생성자는 외부에서 접근 가능하지만, 필요에 의해 private으로 선언되는 경우도 있음 기본 생성자 (default constructor) - 클래스에는 반드시 적어도 하나 이상의 생성자가 존재 - 클래스에 생성자를 구현하지 않아도 new 키워드와 함께 생성자를 호출할 수 있음 - 클래스에 생성자가 하나도 없는 경우 컴파일러가 생성자 코드를 넣어줌 - public Studen..
[Java] 객체 자신을 가리키는 this
·
🍞 Back-End/Java
this가 하는 일 - 인스턴스 자신의 메모리를 가리킴 - 생성자에서 또 다른 생성자를 호출할 때 사용 - 자신의 주소(참조값)를 반환함 생성된 인스턴스 메모리의 주소를 가짐 클래스 내에서 참조 변수가 가지는 주소 값과 동일한 주소 값을 가지는 키워드 public void setYear(int year) { this.year = year; } 생성자에서 다른 생성자를 호출하는 this - 클래스에 생성자가 여러 개인 경우, this를 이용하여 생성자에서 다른 생성자를 호출할 수 있음 - 생성자에서 다른 생성자를 호출하는 경우, 인스턴스의 생성이 완전하지 않은 상태이므로 this() statement 이전에 다른 statement를 쓸 수 없음 public class Person { String name;..
[Java] 객체 간의 협력 collaboration
·
🍞 Back-End/Java
객체 간의 협력 (collaboration) - 객체 지향 프로그램에서 객체 간에는 협력이 이루어짐 - 협력을 위해서는 필요한 메시지를 전송하고 이를 처리하는 기능이 구현되어야 함 - 매개 변수로 객체가 전달되는 경우가 발생 - 객체 협력의 예 버스 타고 학교 가는 학생의 과정 James와 Tomas는 각각 버스와 지하철을 타고 학교에 갑니다. James는 5000원을 가지고 있었고, 100번 버스를 타면서 1000원을 지불합니다. Tomas는 10000원을 가지고 있었고, 초록색 지하철을 타면서 1200원을 지불합니다. 두 학생이 버스와 지하철을 타는 상황을 구현해보자! Student.java public class Student { String studentName; int grade; int mon..
[Java] 함수와 메서드
·
🍞 Back-End/Java
함수 (function) - 하나의 기능을 수행하는 일련의 코드 - 구현된(정의된) 함수는 호출하여 사용하고 호출된 함수는 기능이 끝나면 제어가 반환됨 - 함수로 구현된 하나의 기능은 여러 곳에서 동일한 방식으로 호출되어 사용될 수 있음 함수 호출과 스택 메모리 - 스택: 함수가 호출될 때 지역 변수들이 사용하는 메모리 - 함수의 수행이 끝나면 자동으로 반환되는 메모리 메서드 (method) - 객체의 기능을 구현하기 위해 클래스 내부에 구현되는 함수 - 멤버 함수 (member function)이라고도 함 - 메서드를 구현함으로써 객체의 기능이 구현됨 - 메서드의 이름은 그 객체를 사용하는 객체(클라이언트)에 맞게 짓는 것이 좋음 ex) getStudentName() 객체의 속성은 멤버 변수로, 객체의..
[Java] 인스턴스 생성과 힙 메모리
·
🍞 Back-End/Java
인스턴스 (instance) - 클래스는 객체의 속성을 정의하고, 기능을 구현하여 만들어 놓은 코드 상태 - 실제 클래스 기반으로 생성된 객체(인스턴스)는 각각 다른 멤버 변수 값을 가지게 됨 - 가령, 학생의 클래스에서 생성된 인스턴스는 각각 다른 이름, 학번, 학년 등의 값을 가지게 됨 - new 키워드를 사용하여 인스턴스 생성 힙 메모리 (heap memory) - 생성된 인스턴스는 동적 메모리에 할당됨 - C나 C++ 언어에서는 사용한 동적 메모리를 프로그래머가 해제시켜야 함(free()는 delete 이용) - 자바에서 Gabage collector가 주기적으로 사용하지 않는 메모리를 수거 - 하나의 클래스로부터 여러 개의 인스턴스가 생성되고 각각 다른 메모리 주소를 가지게 됨 용어 정리 - 객..
[Java] 객체와 객체지향 프로그래밍
·
🍞 Back-End/Java
객체란? 의사나 행위가 미치는 대상 (사전적 의미) 구체적, 추상적 데이터의 단위 (학생, 회원, 생산, 주문, 배송) 절차 지향 프로그래밍과 객체 지향 프로그래밍 절차 지향 프로그래밍 시간이나 사건의 흐름에 따른 프로그래밍 일어난다 -> 씻는다 -> 밥을 먹는다 -> 버스를 탄다 -> 요금을 지불한다 -> 학교에 도착 대표적인 언어: C 객체 지향 프로그래밍 대표적인 언어: C++, C#, Python, JavaScript 객체 지향 프로그램 구현 - 객체를 정의하고 - 각 객체 제공하는 기능들을 구현하고 - 각 객체가 제공하는 기능들 간의 소통을 통하여 객체 간의 협력을 구현한다 클래스 구현 - 클래스는 대문자로 시작하는 것이 좋음 - java 파일 하나에 클래스는 여러 개가 있을 수 있지만, pub..