ABOUT ME

-

Today
-
Yesterday
-
Total
-

Post Calendar

«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
  • Java Study [2022-08-03] - 객체지향프로그래밍(this, cooperation)
    백엔드 2022. 8. 4. 01:22

    📌 Java Study

    🔸 2022-08-03 수요일

    [클래스와 객체]

    1. this

    • 자신의 메모리를 가리킴
    • 생성자에서 다른 생성자를 호출
    • 인스턴스 자신의 주소를 반환

     

    • 생성자에서 다른 생성자를 호출
        public Person() {
            this("이름 없음", 1);
        }
    
        public Person(String naem, int age) {
            this.name = name;
            this.age = age;
        }

     

    • 생성자의 역할 => 인스턴스의 값을 초기화
    • 인스턴스가 모두 생성되지 않았는데, 무슨 일을 하려면 문제 발생 가능
    • this 로 다른 객체를 생성할 때, 항상 first statement 이어야 함.
        public Person() {
            age = 100;    // 다른 statement 오면 오류 발생
            this("이름 없음", 1);
        }
    
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }

     

        public static void main(String[] args) {
    
            Person personNoname = new Person();
            personNoname.showInfo();
    
            Person personHeo = new Person("Heo", 20);
            personHeo.showInfo();
            System.out.println(personHeo);     // exthis.Person@1a1d6a08
    
            Person p = personHeo.getSelf();
            System.out.println(p);    // exthis.Person@1a1d6a08
        }
        public Person getSelf() {
            return this;
        }
    • 참조 변수 personHeo와 참조 변수가 가져온 getSelf() 메서드를 찾아가보면 this 값 리턴
    • 따라서 둘이 가리키는 메모리 값은 exthis.Person@1a1d6a08 으로 동일

     

    2. 객체 간 협력

    • 객체지향 프로그램은 객체를 정의하고 객체 간의 협력을 구현한 프로그램
    • 정보 은닉 예제 직접 코딩해보기(ExMyDate)
      • day, month, year 변수는 private으로 선언
      • 각 변수의 getter, setter를 public 으로 구현
      • ExMyDate(int day, int month, int year) 생성자 만들기
      • public boolean isValid() 메서드를 만들어 날짜가 유효한지 확인
      • ExMyDateTest 클래스에서 생성한 ExMyDate 날짜가 유효한지 확인

     

    • 모든 멤버 변수를 private로 설정(boolean 까지)
    • 이 때, isValid = true 설정
    • setYear, 연도 설정 시 정상 연도인지 구분하기 위해 Calendar import 후 getInstance() 메서드 사용
    • setMonth, 1 ~ 12개월 정상 범위를 벗어난 값에 대하여 isValid = false설정
    • setDay, switch 문으로 30일, 31일 있는 달을 구분하고, 윤년을 구분하기 위해 조건문 설정
    • showDate 메서드로 isValid = trueisValid = false로 각 헤당하는 구문 출력 가능토록 구현
    • Menu 클래스에 public static final int STARLATTE = 4500;에서 static fianal을 추가하니 오류가 정정됨
    • static final => 클래스 내부 도는 외부에서 참조의 용도로만 선언된 변수는 이 같이 선언

     

    • static, final, static final 정리
    • static => 객체 생성 없이 사용할 수 있는 필드와 메소드를 생성하고자 할 때 활용
    • final=> 해당 변수는 값이 저장되면 최종 값이 되므로, 수정이 불가능하다는 의미
    • static final=> 모든 영역에서 고정된 값으로 사용되는 상수

     

    🔖 Eclipse 실습

    day8

    🔖 Eclipse 출력 Console

    day8_console1day8_console2day8_console3day8_console4

    댓글

Designed by Tistory.