Java 오브젝트

춤인형의 개발일지·2024년 12월 5일

java

목록 보기
10/14

24/12/05(목)

오브젝트

클래스안에는 "오브젝트" 라는 것이 있다.

오브젝트는 .찍었을 때 뭐가 나오는 애들 전체를 오브젝트라고 부른다.
클래스는 아직 실제로 데이터가 있는 상태는 아니다. 설계도일 뿐이다. "new"를 하는 순간 오브젝트가 생성된다.
즉, 오브젝트는 실제 데이터이다.

👀예제
클래스 활용
이 클래스 안의 정의한 변수들을 사용하기 위해서는 테스트코드에서 작성해야한다.

 void name(){
 		//내가 만든 클래스 활용
        Book book1 = new Book();
        //new = 오브젝트 만든다.
        book1.title = "누가 내 머리에 똥쌌어";
    }

여기서 book1은 오브젝트이다. 하나의 객체.라는 의미를 가지고 있다.

❗주의
오브젝트는 new를 사용할 때마다 오브젝트가 새로 생긴다.

new Book();
Book book1 = new Book();
Book book2 = new Book();

오브젝트 쓰기

book1.title = "누가 내 머리에 똥쌌어";

오브젝트 읽기

book1.title;

생성자

클래스에서 정의된 변수들을 활용하지 않으면 안된다. 그걸 전부 다 사용하지 않으면 에러가 나게 해주는 역할이다.
⚡예를들어 책에 대한 정보인 책 이름, 책 가격, 책 저자 이런거를 다 받아야 하는데 실수로 가격을 안적었을때 에러를 내겠다는 의미

클래스 이름 -> 우클릭 -> generate -> Constructor -> 전체 : alt + insert

🤖코드의 구조

public 클래스이름 (클래스에 정의된 변수들){
	this.변수 = 변수; // this는 클래스를 나타낸다.
    this.변수 = 변수;

👀예제

  • 생성자 생성
public class Book {
    String title;
    String publishedAt;
    int price;
    String isbn;

    //참조
    Author 작가;
    Publisher 출판사;

	//생성자
    public Book(String title, String publishedAt, int price, String isbn, Author 작가, Publisher 출판사) {
        this.title = title;
        this.publishedAt = publishedAt;
        this.price = price;
        this.isbn = isbn;
        this.작가 = 작가;
        this.출판사 = 출판사;
    }
}
  • 생성자 활용
 @Test
    void test() {
        Publisher publisher1 = new Publisher("길벗");
        Author author1 = new Author("추민영","2002-03-05");
        Book book1 = new Book("누가 내 머리에 똥이냐?", "0000-00-00",17000, "0", author1, publisher1);
    }

⚡생성자는 내가 미쳐 활용하지 못한 데이터가 있을 때 활용하게 해주는 역할이다.

생성자의 검사

생성자는 함수이다. 따라서 생성자 함수 안에서 if문을 넣어줄 수 있다. 즉, 조건을 넣을 수 있다.
❗이렇게 조건을 넣어줘야 이상한 것이 들어갔을 때 에러를 낼 수 있다.

👀예제

//전
//원래는 "" 안에 아무거나 넣을 수 있었는데
Publisher publisher1 = new Publisher("길벗이구만요~~");

//후
//생성자 안에 조건을 달아주게 되면, 
   public Publisher(String name){
   		if(name.length() != 3){
        //일부로 에러코드 넣기
        this.name = name;
        }
    }
 
 //에러남
Publisher publisher1 = new Publisher("길벗이구만요~~");

Enum

클래스와 비슷하게 나만의 타입을 만들기 위함

🤖코드의 구조

public enum 이넘이름{ //이넘 이름은 대문자로
	이름,
    이름,
    ...
}

👀예제

  • enum 정의
public enum Ballresult {
    STRIKE,
    BALL,
    NOTHING,
}
  • enum 활용
//함수 이름도 바꿔줘야한다.
public Ballresult matchStatus(Ball otherBall){
        
        if(this.number == otherBall.number &&
                this.position == otherBall.position){
            //enum활용
            return Ballresult.STRIKE;
            //return "STRIKE";
        }
        if (this.number == otherBall.number){
            return Ballresult.BALL;
            //return "BALL";
        }
        //return "NOTHING";
        return Ballresult.NOTHING;
    }

Static

값을 고정

static int price = 1000

이렇게 사용하면 price는 무조건 1000이다. 어디가서 못고침!


😐 느낀점

오브젝트는 이름만 어렵지 알고나면 쉬운 존재이다.
클래스친구들만, `.`을 찍을 수있고, 그것이 바로 오브젝트라는 것이다.

생성자도 이름만 어렵지 데이터를 더 쉽고 효율적으로 활용할 수 있는 코드이다.
코드는 우리가 더 알기 쉽고 편리하게 사용하기 위함이니까 이런 코드들을 잘 활용해야한다.

0개의 댓글