그냥

객체지향

객체지향이란 모든 것을 객체로 보겠다는 의미이다. 주관적이다.

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
profile

그냥

@Ticketpaper

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그