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("길벗이구만요~~");
클래스와 비슷하게 나만의 타입을 만들기 위함
🤖코드의 구조
public enum 이넘이름{ //이넘 이름은 대문자로
이름,
이름,
...
}
👀예제
public enum Ballresult {
STRIKE,
BALL,
NOTHING,
}
//함수 이름도 바꿔줘야한다.
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 int price = 1000
이렇게 사용하면 price는 무조건 1000이다. 어디가서 못고침!
😐 느낀점
오브젝트는 이름만 어렵지 알고나면 쉬운 존재이다.
클래스친구들만, `.`을 찍을 수있고, 그것이 바로 오브젝트라는 것이다.
생성자도 이름만 어렵지 데이터를 더 쉽고 효율적으로 활용할 수 있는 코드이다.
코드는 우리가 더 알기 쉽고 편리하게 사용하기 위함이니까 이런 코드들을 잘 활용해야한다.