객체지향 Java

P·2021년 10월 27일
0

클래스

객체를 정의한 것. (틀, 설계도)
클래스의 용도: 객체를 생성하기 위해 사용


객체

실제로 존재하는 것. (제품)
객체 = 속성(변수) + 기능(메소드)
객체 생성은 참조 변수를 통해 객체를 참조하는 식으로 생성

Tv t = new TV();	// t는 TV객체를 참조하는 참조변수

인스턴스

클래스로 부터 생성된 객체(=인스턴스, 인스턴스화)


인스턴스 메소드

클래스 내에서 인스턴스 변수를 사용
다른 클래스에서 이용 시 객체를 생성하고 호출해야함
참조변수.메소드이름()


선언 위치에 따른 변수 종류

  • class영역 내에 선언 -> 인스턴스 변수(iv)
  • static + 인스턴스 변수(iv) = 클래스 변수(cv, 공유변수)
  • 메소드영역 내에 선언 -> 지역 변수(lv)

    공통 속성에 대해서는 클래스 변수(cv)로 선언, 개별 속성에 대해서는 인스턴스 변수(iv)로 선언


static 메소드

객체생성 선언 없이 클래스명.메소드이름() 으로 호출가능


오버로딩

한 클래스 내에 같은 이름의 메소드를 여러개 정의
(ex. println)

  • 조건: 1. 메소드 이름이 같아야 함
  1. 매개변수 개수 또는 타입이 달라야 함
  2. 반환 타입은 관계 없음

생성자

  • 인스턴스 초기화 메소드(iv 초기화)
  • return 값이 없음(void 작성 X)
  • 이름이 클래스의 이름과 같아야함
  • 모든 클래스는 생성자를 가져야함

기본 생성자: 생성자가 하나도 없을 때만 컴파일러가 자동으로 생성

생성자 this()

  • 생성자에서 다른 생성자 호출시 사용
  • 다른 생성자 호출 시 '첫줄'에서만 사용

참조변수 this

생성자 this()는 참조변수 this와 다른것

  • 인스턴스 자신을 가리키는 참조변수
  • 인스턴스 메소드 (생성자 포함)에서 사용가능
  • 지역변수(lv)와 인스턴스 변수(iv)를 구분할 때 사용

멤버변수 초기화

  • 복잡한 초기화: static{}
static int[] arr = new int[10];	// 명시적 초기화
static {			// 클래스 초기화
	for(int i=0; i<arr.length; i++){
    	arr[i] = (int)(Math.random()*10)+1;
        }
}

참조변수 super

객체 자신을 가리키는 참조변수, 인스턴스 메소드 안에서만 사용가능(this와 유사)

  • 조상의 멤버와 자신의 멤버를 구별할 때 사용
    :조상 = super.x, 자신 = this.x

super()

조상의 생성자를 호출할 때 사용
조상의 멤버는 조상의 생성자를 호출해서 초기화
super(x,y) -> 조상클래스의 생성자를 호출


캡슐화

외부로 부터 데이터를 보호하기 위해 접근제어자를 사용, 내부적으로만 사용하는 부분을 감추기 위해 사용


다형성

조상타입 참조변수로 자손 타입 객체를 다루는 것

Tv t = new SmartTV();
//조상 타입 참조변수 t, 자손 타입 객체 SmartTV();

자손 타입의 참조변수로 조상 타입 객체생성 X
하나의 배열에 여러 개의 객체를 담을 수 있음(조상 타입의 배열에 자손들의 객체를 담을 수 있음)


참조변수의 형변환

FireEngine fe = new FireEngine();
Car c = (Car)fe;

참조변수가 가리키고 있는 변수의 주소값을 그대로 c 참조변수에 적용하여 fe, c 모두 같은 주소를 가리키게 됨
fe가 사용가능한 iv변수 또는 메소드에 비해 c의 경우는 c의 iv와 메소드만 접근가능함 (리모콘만 바꿈)


instanceof 연산자

참조변수의 형변환이 가능한지 확인하기 위한 연산자, 가능하면 true 반환


예외처리

오류의 종류

1. 컴파일 에러 : 컴파일 할 때 발생하는 에러

2. 런타임 에러 : 실행 중 발생하는 에러

3. 논리적 에러 : 작성 의도와 다르게 동작

  • 런타임 에러 -
  1. 에러 - 프로그램 코드에 의해 수습될 수 없는 심각한 오류
  2. 예외 - 프로그램 코드에 의해 수습될 수 있는 미약한 오류
profile
개인 정리 공간

0개의 댓글