20240905 OOP(2)

Dodo Lee·2024년 9월 5일

※ 클래스(Class) ※

1. 클래스 선언

[ 접근제한자] [예약어] class 클래스명{
  1) 필드(멤버 변수)
  2) 생성자
  3) 메서드(getter / setter)
}

2. 클래스 접근제한자

1) public : 같은 패키지, 전체에서 접근 가능
2) (default) " 같은 패키지
--> "( )" : 무조건 생략 // "[ ]" : 생략 가능

※ 필드 (Field) ※

1. 자바에서의 각 변수의 특징

- 필드 : 클래스에서 변수에 관련된 것(속성)을 작성하는 곳

1) 클래스 변수 : static으로 선언도니 멤버변수
2) 인스턴스 변수 : new heap에 할당되는 객체(인스턴스)
3) 지역변수 : 메서드, 제어문 변수 stack

2. 필드 표현식

[접근제한자][예약어] 자료형 변수명 [=초기값];

3. 필드 접근제한자

1)public : 해당 클래스 내부, 같은 패키지 내, 후손 클래스 내, 전체
2)protected : 해당 클래스 내부, 같은 패키지내, 후손 클래스 내
3) (default) : 해당 클래스 내부, 같은 패키지 내
4) private : 해당 클래스 내부

4. 필드 예약어

1) static

  • 같은 타입의 여러 객체가 공유할 목적의 필드에 사용하며,
    프로그램 start시에 정적 메모리(static)영역에 자동 할당되는 멤버에 적용
  • private설정 후 getter / setter 생성시, static 같이 작성해야 됨
    2) final
  • 하나의 값만 계속 저장해야 하는 변수에 사용하는 예약어(상수)
  • getter / setter 자동 생성시 setter는 생성 X

※ 생성자 (Constructor) ※

1. 정의

: new 연산자를 통해서 객체를 생성할 때 생성된 객체의 필드 값 초기화 + 지정된 기능을 수행하는 역할

2. 생성자 작성 규칙

1) 생성자의 이름은 반드시 클래스명과 같아야 한다
2) 반환형이 존재하지 않는다

3. 생성자 종류

(1) 기본 생성자
: 작성하지 않은 경우, 클래스 사용 시 컴파일러가 자동으로 기본 생성자 생성
(2) 매개변수 생성자
: 객체 생성 시 전달받은 값으로 객체를 초기화 하기 위해 사용
: 매개변수 생성자 작성 시 컴파일러가 기본 생성자를 자동으로 생성해주지 않음
: 상속에서 사용 시 반드시 기본 생성자를 작성
: 오버로딩을 이용하여 작성

※ 연습 문제 ※

null/0/0.0/null
자바의정석/30000/0.2/남궁성
"============================="
수정된 결과 확인
C언어/30000/0.1/홍길동
"============================="
도서명 : C언어
할인된 가격 = 27000원
도서명 : 자바의정석
할인된 가격 = 24000원

1. model.vo

1) 필드

private String title;
ptivate int pirce;
private double discountRate;
private String author;

2) 생성자

public Book(){}
public Book(String title, int price, double discountRate, String author){
  this.title = title;
  this.price = price;
  this.discountRate = discountRate;
  this.author = author;
}

3) 메소드

@Override
public String toString(){
  return + "/" + price + "/" + discountRate + "/" + author;
}

getter와 setter은 생략

2. model.service

public void practice(){
  Book b1 = new Book();
  System.out.println(b1.toString());
  Book b2 = new Book("자바의정석", 30000, 0.2, "남궁성");
  System.out.println(b2.toString());
  System.out.println("=============================");
  b1.setTitle("C언어");
  b1.setPrice(30000);
  b1.setDiscountRate(0.1);
  b1.setAuthor("홍길동");
  System.out.println("수정된 결과 확인");
  System.out.println(b1.toString());
  System.out.println("=============================");
  System.out.println("도서명 : " + b1.getTitle());
  System.out.println("할인된 가격 = " + (int)(b1.getPrice()*(1-b1.getDiscountRate()))+"원");
  System.out.println("도서명 : " + b2.getTitle());
  System.out.println("할인된 가격 = " + (int)(b2.getPrice()*(1-b2.getDiscountRate()))+ "원");
}
profile
연습생

0개의 댓글