728x90
객체
객체란?
- 존재하는 것에 이름을 붙여놓고 특성을 부여한 것
프로그래밍에서 객체란?
- 프로그램에서 표현하고자 하는 기능을 묶기 위한 단위
✅ 객체 = 기능(함수, 메서드) + 데이터(멤버변수, 프로퍼티)
프로토타입이란?
- 상품화에 앞서서 핵심 기능만 넣은 기본 모델, 기초 버전, 변화에 대응 쉬움
클래스
클래스란?
- 객체의 설계도 역할을 하는 프로그램 소스 → 같은 속성, 다른 객체
→ 클래스 안에 포함된 멤버변수와 메서드를 그룹화하기 위해 작성한 것
✅ 멤버변수 : 변수, 전역변수 ex> int age; 같은 것
✅ 메서드 : 함수 ex> void print(), int plus() 등 기능으로 묶인 것
- 멤버변수와 메서드는 여러 개 존재할 수 있다
객체의 할당
- 클래스이름 객체이름 = new 클래스이름();
→ 하나의 클래스가 정의되면, 그 클래스의 구조를 기반으로 하는 여러 개의 객체를 생성할 수 있다.
이 말은, 하나의 클래스로 여러 개의 객체를 생성할 수 있다.
객체의 사용
- 객체를 사용할 때 변수나 메서드는 점(.) 으로 연결하여 접근
- 같은 클래스를 통하여 생성된 객체라도 서로 다른 값 대입 가능
- 클래스에서 멤버변수에 대입된 값은 객체를 통하여 값을 지정하기 전까지 사용될 "기본값"의 의미이다.
class foo {
String name = "얌얌";
int age = 20;
//이때 지정된 값은 기본값이다
//객체를 생성하여 새로 값을 대입하지 않으면 값은 변하지 X
}
- 하지만 일반적으로 멤버변수에 값을 초기화하지 않고 선언만 한다.
- 두 개 이상의 메서드가 서로 동일한 대상을 위해 존재할 경우, 클래스에 포함시켜 그룹화한다.
- 메서드들이 멤버변수를 공유할 경우 전역변수라고 한다. (공유 자원)
- 메서드 안에서 선언된 변수는 지역변수라고 한다. → 메서드 안에서만 사용
class HelloWorld {
String message; //멤버변수 = 전역변수
void sayHello() { System.out.println(message);}
void setEng() { message = "Hello Java"; }
void setKor() { message = "안녕하세요. 자바."; }
}
- 결과값을 리턴하는 경우, 객체를 여러 개 생성할 필요 없이 하나의 객체를 재사용하는 것이 바람직하다.
Calc c1 = new Calc();
int a = c1.sum(100,200);
int b = c1.sum(200,300);
THIS
this란?
- 클래스 안에서 자기 자신을 표현한다.
calss foo {
String name;
public void setName() {
String name;
name = "얌얌";
}
}
- 이 코드에서 '얌얌'이 들어가는 곳은 4번째 줄의 name에 들어가게 된다.
→ 멤버변수와 지역변수가 동일한 이름으로 존재하는 경우 범위가 작은 변수 우선적으로 인식한다.
calss foo {
String name;
public void setName() {
String name; name = "얌얌";
this.name = "쭈삼";
}
}
- '얌얌'이 4번 name에 대입이 되었다면, '쭈삼'은 this가 붙어서 2번 라인 name으로 대입이 된다.
✅ 모든 멤버변수 앞에는 this를 붙이는 것이 좋다. 하지만 메서드 앞에는 굳이 this를 붙이지 않는다. 왜냐하면, 다른 클래스의 메서드를 이름만으로 호출이 불가능하기 때문에 쓰지 않는다.
생성자
생성자란?
- new 키워드를 사용하여 객체가 생성될 때 자동으로 실행되는 특수한 형태의 메서드이다.
class foo {
foo() { <- 이 블럭이 생성자이다
//생성자는 있지만, 내용은 비어있다
}
}
생성자의 특징
- 클래스와 이름이 똑같다.
- 리턴형이 없다.
- 객체가 생성되면 자동으로 생성되기에 객체 초기화 때 사용한다.
- 따로 코딩하지 않아도 Java에서는 기본 생성자가 있다고 인식한다.
파라미터를 갖는 생성자
- 생성자의 파라미터를 멤버변수에 복사하는 것으로 객체의 초기화 때 사용한다.
- 파라미터가 정의된 경우 객체 생성 때 파라미터를 전달해야 한다.
Foo obj = new Foo("얌얌", 19);
//파라미터 지정이 있을 경우 파라미터 같이 전달
728x90