객체지향
객체지향이란 모든 것을 객체로 보겠다는 의미이다. 주관적이다.
OOP : Object-Oriented Programming
OOP의 4대 특성으로는
1. 캡슐화
2. 상속
3. 다형성
4. 추상화
가 있다.
클래스
클래스란 객체를 정의해 놓은 것, 객체를 생성하는 데 사용된다.
객체
객체 사전적인 의미로는 실제로 존재하는 것. 사물 또는 개념이다.
사람은 세상을 물체(object)의 집합으로 인지한다.
물체는 상태를 가질 뿐만 아니라 동작도 할 수 있다.
개라는 객체를 만들때
이름, 나이, 성별이라는 상태(변수)를 저장하고
걷기, 먹기, 짖기라는 동작(함수 : 메서드)를 저장한다.
객체는 상태(변수)와 동작(메서드) 까지 포함한다.
class dog{
String name;
int age;
String sex;
public void walk(){}
public void eat(){}
public void bark(){}
}
쉽게 말하면 클래스는 설계도 객체는 설계도로 만든 제품인 것이다.
객체를 만들려면 아래와 같이 작성해야 한다.
이를 인스턴스화 라고 한다.
dog cheeze; // 생성한 객체의0x100 주소가 cheeze에 저장
cheeze = new dog(); // dog 객체 생성 주소 0x100
// 새로운 dog를 만든다. 그 dog는 cheeze다.
dog pug = new dog();
// 새로운 dog를 만든다. 그 dog는 pug이다.
cheeze와 pug라는 객체를 만들었고 이는 dog라는 클래스에 속해있다.
객체(object)는 인스턴스(instance)를 포함하는 일반적인 의미라 객체 = 인스턴스라 할 수 있다.
※ 객체 생성 변수의 초깃값으로 초기화 해주기에 int 는 0으로 float는 0.0 참조형은 null로 초기화 해준다.
dog cheeze = new dog(); 문장을 통해 객체를 생성 할때
dog 객체의 주소 0x100을 cheeze에 저장한다.
즉 cheeze는 dog 객체의 주소를 담고 있는 변수이다.
자바에선 이것을참조형(reference type)이라고 한다.
자바는 기본 자료형(ex: int 등)제외하면 모두 참조형이다.
dog cheeze = new dog();
dog pug = new dog();
pug.name = "pug"; // pug안에 name변수에 "pug"를 넣어라
cheeze.name = "cheeze"; // cheeze안에 name변수에 "cheeze"를 넣어라
cheeze.age = 2; // cheeze안에 age변수에 2를 넣어라
cheeze.sex = "male"; // cheeze안에 sex변수에 "male"을 넣어라
System.out.println(cheeze.name+", "+ cheeze.age+", " + cheeze.sex);
0이 아닌 다른값을 생성된 인스턴스에 넣으려면 위와 같이 작성하면 된다.
pug = cheeze;
이 문장을 작성할시
pug가 0x200을 가리키고 있었지만 cheeze의 주소를 대입해서 0x100을 가리킨다.
※ 이때 0x200는 자바의 가비지 컬렉션 기능으로 인해 가비지 컬렉터가 알아서 가비지(쓰레기)를 치워준다.
※ 가비지 : 더 이상 사용되지 않는 개체
하나의 인스턴스를 여러 개의 참조변수가 가리키는 경우는 가능하지만
여러 개의 인스턴스를 한개의 참조변수가 가리키는 경우는 불가능하다.
'JAVA 공부 > 객체지향 공부' 카테고리의 다른 글
5. 상속 (2) (0) | 2023.03.18 |
---|---|
4. 상속 (1) (0) | 2023.03.18 |
4. getter와 setter (0) | 2023.03.13 |
3. 생성자 (0) | 2023.03.13 |
2. 변수, 메서드 (0) | 2023.03.13 |