코드스테이츠 백엔드 11일차 || Java 객체지향 프로그래밍

hyoreal·2022년 7월 8일
0

CodeStates

목록 보기
13/32

오늘부터 객체지향프로그래밍에 대해 배운다. 굉장히 어려울거라고 하셔서 조금 걱정되지만 그래도 열심히 해봐야지!!

오늘 공부를 시작하기 전 인텔리제이에서의 오류가 발생했다. 콘솔창으로 출력되는 한글들이 모두 깨져서 나온것이다.
급하게 구글링하며 방법을 찾아봤고 2가지의 방법이 있었다.
1. 설정에서 파일인코딩,콘솔 인코딩을 모두 UTF-8로 변경하기.
실패였다. 여전히 한글은 깨져서 출력됐다.
2. 사용자 지정 VM 옵션에
-Dfile.encoding=UTF-8 -Dconsole.encoding=UTF-8 추가하기.
이또한 실패였다.
계속 구글링해본 결과 아무래도 이전에 설치한 jdk와 코드스테이츠를 시작하며 설치한 jdk, 그리고 환경변수에서의 오류 같았다.
환경변수 JAVA_HOME 에서 뭔지모를 오류가 있었다.
아직도 무슨 오류인지는 모르지만 jdk를 직접파일로 연결해줬더니 한글이 깨지지 않고 나온다.
아무리 봐도 JAVA_HOME에서의 파일 경로도 다른 환경변수들도 틀린게 없었다.
그래도 당장 문제있는건 해결했으니 후련하면서도 뿌듯했다.
조금 지체됐으나 바로 공부를 시작했다.


클래스와 객체

  • class는 객체(instance)를 생성하기 위한 틀
  • class로 생성한 객체를 클래스의 인스턴스라고 함.
class 클래스명 {
}
  • 클래스의 기본문법은 위와같다.
    • 클래스는 field, method , constructor , inner class 로 구분된다.
    • field : 클래스의 속성.(ex, 색상, 구성 등)
    • method : 클래스의 기능. (ex, 동작 등)
    • constructor : 객체 생성.
    • inner class : 클래스 내부의 클래스.

    • member : field , method, inner class를 클래스의 멤버라고 부른다.
  • new 키워드를 통해 클래스 멤버에 접근할 수 있다.



  • 일반클래스
class 클래스명{
  // 내용
}

  • 중첩 클래스
class 클래스명 {
  static class {
  //내용
  }
}

  • 내부클래스
class 클래스명 {
  class 클래스명 {
  //내용
  }
}

필드(Field)

  • 자바에서의 변수는 크게 세가지
    • 클래스변수(cv, class variable)
    • 인스턴스변수 (iv, instance variable)
    • 지역변수 (lv, local variable)
  • 이렇게 있지만 필드에 속하는 변수는 클래스변수인스턴스변수

  • 클래스변수와 인스턴스 변수는 static유무로 구별가능.

  • 클래스 변수 : static키워드와 같이 선언됨.
  • 인스턴스변수 : static없이 선언됨.
  • 지역변수 : 위 두가지를 제외한 메서드에 포함된 모든 변수.
class ex {
  int iv; //인스턴스 변수
  static cv; // 클래스 변수
  
  void method() {
    int lv = 0; // 지역변수
  }
}
  • iv : new생성자()를 통해 인스턴스가 생성될때 만들어짐. 각자 고유한 속성 저장.

  • cv : 공통된 정보 저장공간.

  • lv : 메서드 내 블록에서만 사용가능. 직접 초기화하지않으면 오류발생.

    static

  • 클래스멤버가 사용하는 키워드. static이 붙어있으면 정적멤버로 인스턴스변수와 구분.

  • 정적멤버 : 객체간의 공유 변수의 성질을 갖고있음. 메서드에서도 동일.

  • 정적메서드 : 인스턴스변수,인스턴스메서드 사용 불가.

    메서드 (Method)

  • 메서드 : 특정 작업을 실행하는 명령문들의 집합.

  • 메서드 시그니처와 메서드 바디로 구분.

    자바제어자 반환타입 메서드명(매개변수) { // Method Signature
      메서드 내용  // Method body
    }
  • 메서드의 반환타입이 void가 아닌 경우 메서드 바디 안에 반드시 return문이 있어야함.

    메서드 호출

  • 클래스 외부 : 인스턴스 생성 후 .을 통해 호출.

  • 클래스 내부 : 인스턴스 생성을 하지 않아도 호출 가능.

    매서드명(매개변수1,매개변수2);
  • 위와 같이 메서드를 호출할수있다.

  • 메서드 호출 시 ()안에 입력값은 인자라고 한다.

    메서드 오버로딩 (Method Overloading)

  • 하나의 클래스 안에 동일한 이름을 가진 메서드들을 정의하는것.

  • 하지만 무조건 같은 이름이라고 해서 오버로딩이 일어나지 않음.

  • 오버로딩이 성립되는 조건

    1. 같은 메서드명
    2. 매개변수의 개수, 타입이 다르게 정의.
    • 이 두 조건을 모두 성립하지 않으면 컴파일에러 발생.
    • 반환타입은 오버로딩 성립에 영향X.

걱정에 비해 생각보다 이해가 잘 됐던거같다. 자바스크립트에서 생성자함수와 비슷한 느낌이 들어서인지 빠르게 이해가 됐던것같다 아직 많이 남아서 걱정되긴하지만 잘 해봐야지!!

profile
좌충우돌 코린이 성장기

0개의 댓글