• 검색 결과가 없습니다.

5장. 클래스와 객체

N/A
N/A
Protected

Academic year: 2022

Share "5장. 클래스와 객체"

Copied!
12
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

자바 프로그래밍

5장. 클래스와 객체

참고교재:명품 자바 에센셜(저자 황기태) 출 판 사 :생능

(2)

메소드 오버로딩 (overloading)

• 메소드의 이름은 동일하지만 매개 변수의 형식을 다르게 하여 여러 개의 메소드를 작성하는 개념

• 다양한 데이터 형에 대해서 동일한 처리를 하는 메소드 작성에 이용

• 자바의 다형성 특징의 하나 예)

public class MethodSample { public int getSum(int i, int j) {

return i + j;

}

public int getSum(double i, double j) { return i + j;

} }

(3)

객체 소멸

• 객체 소멸

new에 의해 할당 받은 객체와 배열 메모리를 자바 가상 기계로 되돌려 주는 행위

소멸된 객체 공간은 가용 메모리에 포함

자바에서 사용자 임의로 객체 소멸 안됨

객체 소멸은 자바 가상 기계의 역할

• 가비지(garbage)

가리키는 레퍼런스가 하나도 없는 객체

더 이상 접근할 수 없어 사용할 수 없게 된 메모리

• 가비지 켈렉션(collection)

자바 가상 기계의 가비지 콜렉터가 자동으로 가비지 수집, 반환

(4)

static 멤버

• 객체가 생성되기 전 프로그램이 시작될 때 생성

• 클래스 당 하나만 생성

• static 필더, static 메소드 등

• 동일한 클래스의 모든 객체들에 의해 공유

• 클래스 이름으로 바로 접근이 가능(객체 이름도 가능)

클래스 멤버

• static 메소드는 객체가 생성되지 않은 상황에서도 사용 가능함

static 메소드 내에선 객체에 속한 인스턴스 메소드나 인스턴스 필드를 사용 못함

static 멤버만 사용 가능

(5)

클래스 상속

• 자바의 상속이란?

어떤 클래스의 필드와 메소드를 다른 클래스에 물려주는 것

물려주는 클래스를 부모 클래스 또는 슈퍼 클래스

물려받는 클래스를 자식 클래스 또는 서브 클래스

• 상속의 장점

클래스 사이의 멤버 중복 선언 불필요

클래스 재사용과 확장을 통한 소프트웨어 개발 생산성 향상

클래스들의 계층적 분류로 클래스 관리 용이

• extends 키워드로 선언

부모 클래스의 멤버를 물려받아 확장한다는 의미

class ColorPoint extends Point { }

(6)

자바 상속 특징

• 클래스 다중 상속 불허

C++는 다중 상속 가능

• C++는 다중 상속으로 멤버가 중복 생성되는 문제 있음

자바는 인터페이스(interface)를 통한 다중 상속 허용

모든 자바 클래스는 묵시적으로 Object클래스 상속받음

Object 클래스는 모든 클래스의 슈퍼 클래스

• 슈퍼/서브 클래스의 생성자 호출

서브 클래스의 객체가 생성될 때 슈퍼/서브 생성자 모두 실행

서브 클래스의 생성자가 호출되면 먼저 슈퍼 클래스의

생성자가 실행되고 다음으로 서브 클래스의 생성자가 실행

(7)

클래스 캐스팅

• 자바의 클래스 사이의 타입 변환

업캐스팅(upcasting)과 다운캐스팅(downcasting)

• 업캐스팅

상속 받은 서버 클래스를 슈퍼 클래스처럼 취급

서버 클래스 타입의 객체가 슈퍼 클래스 타입으로 변환

슈퍼 클래스의 참조 변수가 서브 클래스 객체를 참조 치환 Person p;

Student s = new Student();

p = s; //업캐스팅

업캐스팅된 레퍼런스로는 슈퍼 클래스의 멤버만 접근 가능

업캐스팅 경우엔 명시적 타입 변환을 하지 않아도 된다 p = (Person)s; // p = s;가능

(8)

• 다운캐스팅

업캐스팅된 것을 다시 원래대로 되돌리는 것 Student s = (Student)p;

반드시 명시적 타입 변환을 지정해야 함

• instanceof 연산자

레퍼런스가 가리키는 객체가 어떤 클래스 타입인지 구분

결과를 true 또는 false로 리턴

형식

• 객체레퍼런스 instanceof 클래스타입

• If(p instanceof Person)

(9)

메소드 오버라이딩 (overriding)

• 서브 클래스에서 슈퍼 클래스의 메소드 재정의 작성

• 슈퍼 클래스 메소드의 원형(메소드 이름, 인자 타입 및 개수, 리턴 타입)과 동일해야 한다

• 서버 클래스의 오버라이딩된 메소드가 항상 실행

• 오버라이딩된 메소드는 동적 바인딩 방식으로 처리

동적 바인딩이란 호출된 메소드를 실행 시간에 찾아서 실행시키는 것

• 객체 지향의 다형성 특징의 하나

SuperObject b = new Subobject();

b.paint(); //paint()는 Subobject에서 오버라이딩한 paint()를 호출

(10)

오버로딩과 오버라이딩 비교

메소드 오버로딩 메소드 오버라이딩

동일 클래스나 상속 관계에서 동일한 이 름의 메소드 중복 작성

서브 클래스에서 슈퍼 클래스에 있는 메 소드와 동일한 메소드 재작성

동일한 이름의 메소드를 중복 선언하여 사용의 편리성

슈퍼 클래스의 메소드를 무시하고 서브 클래스에 새로운 기능의 메소드를 재정 의

메소드의 이름은 반드시 동일 메소드의 이름은 반드시 동일

메소드의 인자 타입과 개수가 달라야 함 메소드 인자 타입과 개수가 동일해야 함 정적 바인딩, 즉 컴파일 시에 중복된 메

소드 중 호출되는 메소드 결정

동적 바인딩, 실행 시간에 오버라이딩된 메소드를 찾아 호출

(11)

추상 클래스

• 추상클래스는 abstract로 선언된 클래스

• 보통 추상 메소드를 포함

• 추상 메소드는 실행 코드 없이 원형만 선언된 것

abstract class Shape { //추상 클래스 Shape() { ... }

void edit() { ... }

abstract public void draw(); // 추상 메소드 }

• 추상 클래스는 온전한 클래스가 아니기 때문에 인스턴스를 생성할 수 없다

• 서브 클래스에서 슈퍼 클래스의 추상 메소드

구현(오버라이딩)

(12)

인터페이스

• interface 키워드를 사용하여 선언

• 추상 메소드와 상수 만 포함

• 인터페이스 간에 상속 가능

인터페이스를 상속하여 확장된 인터페이스 작성 가능

• 인터페이스 다중 상속 허용

interface MusicPhoneInterface extends PhoneInterface, MP3Interface {

…………

}

• 상속과 인터페이스 구현(implements)이 동시에 가능

class SmartPhone extends PDA implements MobilePhoneInterface, MP3Interface {

………..

}

참조

관련 문서

주머니에 있는 검은 공의

최빈값은 자료의 개수가 많은 경우에 구하기 쉽기 때문 에 선호도 조사에

이때 한 꼭짓점에 모인 면의 개수가

또한, 평면과 모서리의 교점이 단면의 꼭짓점이 되므로 평면과 모서리의 교점이 많을수록 단면의 변의 개수가 늘어난다.. 즉, 정육면체의 모서리를 최대한 많이 지나는

부정적 수요 수요의 참뜻을 깨닫게 함 전환마케팅 (Conversional Marketing) 무수요 수요를 창조하게 함 자극마케팅 (Stimulational Marketing) 잠재적 수요

Serum insulin-like growth factor I and its relating factors in healthy Korean adults aged over 40 years.. Lang I, Schernthaner G, Pietschmann P, Kurz R, Stephenson JM,

주로 조골세포, 골수 간질세포, T/B 임파구에서 발현되는 RANKL은 파골세포의 표면에 있는 수용체 RANK에 결합하여 하향조절자인 전사 인자(NFkB, NFATc1 등)의 활성을

four case reports and review of literature. Agranulocytosis associated with anti- thyroid drugs. Effects of patient age and drug dose. Remission in children with