안녕하세요~ 항상 나아가는 개발자 pink_salt 핑솔입니다!

코드프레소 Java 웹 개발 체험단 활동을 하고 있습니다.
Java의 정말 중요한 개념인 객체지향 고급에 대해서 알아봅시다~ 고고!
이번엔 'Java 프로그래밍 초급' 강의를 듣고 공부한 내용을 정리하여 세 번째 포스팅을 진행하겠습니다.
메소드 오버라이딩(Method Overriding)
부모 클래스로부터 상속받은 메소드를 자식 클래스가 자신만의 특성에 맞게 새롭게 구현하는 것입니다.
main 클래스에서 각 클래스의 객체를 생성하고 같은 이름의 다른 내용의 메소드를 실행하면 다른 내용의 코드가 객체에 따라 실행되는 것을 볼 수 있습니다.
메소드 오버라이딩의 조건
- 오버라이딩하는 부모 클래스의 메소드와 이름이 같아야 합니다.
- 오버라이딩하는 부모 클래스의 메소드와 파라미터가 같아야 합니다.
- 오버라이딩하는 부모 클래스의 메소드와 리턴 타입이 같아야 합니다.
다형성의 이해(polymorphism)
클래스는 사용자 정의 타입(자료형)
- 변수를 선언할 때 변수 명 앞에 자료형을 명시합니다.
- ex) int x, double pi, String name ~~
그럼 luke의 자료형은?
바로 PaidUser입니다.
즉 -> Java 클래스는 사용자 정의 타입(User Defined Type)으로 자료형으로 사용됩니다.
Java의 타입 체킹
Java는 타입 간의 호환에 매우 엄격한 언어입니다.
기본적으로 서로 다른 타입의 객체를 참조할 수 없습니다.
예외는 있습니다.
Java에서는 부모 클래스의 참조 변수가 자식 클래스의 객체를 참조할 수 있습니다.
차이점?
타입을 부모로 하면 자식만 갖고 있는 멤버 변수에는 접근할 수 없습니다.
다형성(polymorphism)
- 사전적 정의 : 다양한 형태를 가지는 성질입니다.
- 다형성은 객체지향의 주요 특성 중 하나입니다.
- 동일한 사물이 때에 따라 서로 다른 기능을 할 수 있는 것이라고 말할 수 있습니다.
- 하나의 타입이 때에 따라 여러 종류의 객체의 특성을 가질 수 있는 것입니다.
- 여러 종류의 객체를 참조할 수 있는 것
- 같은 형태의 메소드가 때에 따라 다양한 동작을 수행합니다.
- Java에서는 다음 특성을 이용해 다형성을 구현할 수 있습니다.
- 부모 클래스의 참조 변수가 자식 클래스의 객체를 참조할 수 있음.
- 메소드 오버라이딩
다형성의 구현
부모 타입의 객체를 만들어서 자식 타입의 객체를 참조하게 하면 그에 따른 오버라이딩 된 메소드를 사용할 수 있습니다.
왜 다형성을 사용하는가?
- SW 요구사항 변경이나 추가에 대해 유연한 설계가 가능합니다.
- 요구사항이 추가되었을 시에 기존 코드의 변경이 최소화됩니다.
패키지의 이해(Package)
패키지는 관련 있는 클래스를 한 곳에 묶어 놓은 그룹을 말합니다.
클래스를 구분하는 일종의 디렉터리라고도 할 수 있습니다.
패키지는 하위 계층 구조를 가질 수 있습니다.
패키지 명의 작성
- 소문자로만 작성, 클래스의 묶음을 표현하는 의미 있는 이름으로 작성
- 패키지는 계층 구조를 가지며 일반적으로 '1차 도메인. 회사명.'으로 시작됩니다.
- 패키지의 이름과 구조는 실제 OS의 디렉토리 구조와 매핑됩니다.
- 패키지를 생성하면 실제 디렉토리도 새로 생성됩니다.
- 패키지명은 계층 구조의 전체 이름을 모두 포함합니다.
- 하위 계층 구조는 점(.)을 통해 구분할 수 있습니다.
- FQCN(Fully Qualified Class Name)
- 클래스의 FQCN은 패키지 명을 모두 포함합니다.
- 패키지명 + 클래스명
패키지와 클래스
- 모든 클래스는 반드시 하나 이상의 패키지에 속합니다.
- 클래스 생성 시 패키지를 선언하지 않으면, 이름 없는 패키지에 포함됩니다.
- 패키지를 선언하지 않은 모든 클래스는 모두 동일한 패키지에 속합니다.
패키지의 선언
- 해당 클래스가 어떤 패키지에 속하는지 명시하는 것입니다.
- package 키워드를 통해 패키지명을 선언할 수 있습니다.
- 패키지 선언문은 .java 파일의 가장 첫 번째 라인에 작성합니다.
- 모든 클래스에 단 한 번만 패키지를 선언할 수 있습니다.
IDE를 통해서 패키지를 생성합니다.
src > mouse 오른쪽 버튼 클릭 > New > Package > 패키지명 입력
ex) com.codepresso.nuwtube.user 패키지 내 User 클래스 생성
다른 패키지의 클래스 사용하기 - import
- 다른 패키지에 속한 클래스를 사용할 때에는 클래스의 FQCN을 사용해야 합니다.
- FQCN의 반복을 피하려면 import문을 선언합니다.
- 사용하고자 하는 클래스의 FQCN을 명시합니다.
- 특정 패키지 내의 모든 클래스를 사용하는 경우가 있습니다.
- FQCN 대신 '패키지명.*'으로 특정 패키지 내의 모든 클래스를 사용 가능합니다.
default 접근 제어자
- 접근 제어자를 명시하지 않으면 default 접근 제어자가 적용됩니다.
- 같은 패키지 내에서는 접근이 가능하고 다른 패키지에서는 접근이 불가합니다.
protected 접근 제어자
- 같은 패키지 간에는 멤버 접근이 가능합니다.
- 상속 관계에서 부모 클래스의 패키지가 달라도 자식 클래스에서 부모 클래스의 멤버에 접근이 가능합니다.
다음 게시물에서는 객체지향의 컬렉션 프레임워크의 List에 대해 자세히 공부하고 정리해보겠습니다!
열심히 나아가는 개발자 핑솔이었습니다.
go go!
코드프레소 URL: https://www.codepresso.kr/
프리미엄 IT 교육 서비스 - 코드프레소
www.codepresso.kr
'프로그래밍 언어 > Java' 카테고리의 다른 글
Java 프로그래밍 초급(5) - 컬렉션 프레임워크 : List (0) | 2022.01.26 |
---|---|
Java 프로그래밍 초급(4) - 컬렉션 프레임워크 : 개념, 제네릭 (0) | 2022.01.26 |
Java 프로그래밍 초급(2) - 객체지향 고급(상속) (0) | 2022.01.21 |
Java 프로그래밍 초급(2) - 객체지향 메소드 (0) | 2022.01.19 |
Java 프로그래밍 초급(1) - 객체지향 기초 (0) | 2022.01.19 |