Java07_자바 객체지향 문법

1 minute read



1. 생성자

  • 클래스명과 같다.
  • 반환하는 값이 없음.
  • default 생성자 : JVM이 자동으로 생성
  • 오버로딩 지원.
  • this생성자 : 생성자의 첫번째 라인에서만 수행.(다른생성자의 것 불러오기)
    • 생성자 내에서 다른 생성자는 호출 불가하므로 this를 쓴다.
  • 인스턴스객체 생성시 멤버변수를 초기화하는 기능.




2. Static

  • 공유
  • 로딩시점 : 클래스를 한 번 읽을 때 (new보다 전에)
  • 메모리 할당 : 클래스당 하나의 공간. (인스턴스 객체마다 메모리할당X)
  • 사용상 차이
    • 일반 메소드에서 static변수, static메소드 호출가능
    • static에서는 일반 메소드, 멤버변수 호출 불가.
    • class명.static메소드




3. 상속

  • 재사용성과 확장성 : 부모의 것을 내것처럼 쓰는 것
  • extends
  • super : 부모 것 불러오기.
    • 접근제한자 : public, protected만 자식이 접근 가능하다.
  • 다형성 : 자식이 부모와 같은 메소드를 가지고 있지만 기능이 다른 것 [오버라이딩]




4. 접근제한자

  • public
  • protected – 상속인 경우 같은 클래스 접근가능.
  • default
  • private – 은닉성 캡슐화
  • 접근 범위 : public > protected > default > private




5. 추상클래스

  • 하나이상의 추상메소드를 가지고 있는 클래스
  • 추상메소드 : 선언부만 있고 { } 기능이 없음.
  • 인스턴스 생성 불가 : new(X)
  • abstract 키워드 – 클래스와 메소드에만 가능 (멤버변수에는 X)
  • 일반메소드와 추상메소드 모두 가질 수 있음
  • 하위 클래스에서는 부모클래스 오버라이드 해야함
  • 추상 클래스 객체변수 얻기




6. 객체의 형변환

  • 정의 : 대입연산자를 기준으로 좌변 우변의 타입이 다른 경우 발생
  • 조건 : 좌변 우변이 상속일때만 일어남.
  • 종류 : 묵시적 / 명시적
    • 묵시적 : 자식의 타입의 변수를 부모가 가짐
    • 명시적 : 부모의 주소값을 자식이 갖게함. [강제적으로] -> 묵시적 형변환이 되어있어야함.




7. 인터페이스

  • 상수와 추상메소드의 집합. 기능의 집합
  • implements
  • 인터페이스는 추상메소드만 있다보니 인스턴스 객체(new)불가.
  • 인터페이스 메소드를 자식에서 반드시 오버라이드해야 인스턴스객체 생성가능
  • public static final : 인터페이스 객체 변수 얻기.




8. final

  • 변수, 메소드, 클래스에 붙일 수 있음.
    • 변수 : 대입불가
    • 메소드 : 오버라이드불가
    • 클래스 : 상속불가.




9. 객체의 형변환

  • 익명클래스?
  • 클래스 선언 + 객체 생성
  • 익명클래스의 형태




10. 예외처리

  • 예상치 못하게 발생한 문제방지 (프로그램종료).
  • 직접처리 : try, catch, finally
    • try : 예외가 발생할수도 있는 부분.
    • catch : 예외시 수행
    • finally : 예외 발생하든말든 무조건 수행
  • 간접처리 : throws
    • 나를 부른 피호출자 메소드에서 예외를 처리하는 것.
  • throw : 내가 예외 상황을 설정하고 싶을 때 ( 8글자 이상입력하면 에러메시지 띄우기)