🌎 Web/Java

🌎 Web/Java

    [Java] 추상 클래스

    07 상속 07-3 추상 클래스 추상 클래스란? 여러 클래스의 공통된 특성(필드, 메소드)를 추출해서 선언한 것을 추상클래스라고 한다. 추상 클래스와 실체 클래스는 부모, 자식 클래스로서 상속관계를 가진다. 추상 클래스의 용도 공통된 필드와 메소드의 이름을 통일할 목적 실체 클래스를 작성할 때 시간 절약 추상 클래스는 실체 클래스의 설계 규격 → 객체 생성용 X 추상 클래스 선언 abstract 키워드를 이용하여 선언한다. new 연산자로 객체를 생성할 수 없고, 상속을 통해 자식 클래스만 만들 수 있다. public abstract class 클래스 { // 필드 // 생성자 -> 자식 객체가 생성될때 super(...)로 호출 // 메소드 } 추상 메소드와 재정의 메소드 선언만 통일하고 실행 내용은 ..

    [Java] 타입 변환과 다형성

    07 상속 07-2 타입 변환과 다형성 다형성이란? 사용 방법은 동일하지만 다양한 객체를 이용해서 다양한 실행결과가 나오도록 하는 성질을 의미한다. 다형성은 메소드 재정의와 타입 변환으로 구현한다. 자동 타입 변환 자동 타입 변환(promotion)이란? 프로그램 실행 도중 자동으로 타입 변환이 일어나는 것을 말한다. 자식은 부모 타입으로 자동 타입 변환이 가능하다. 부모타입 변수 = 자식 타입; // 자동 타입 변환 cat과 animal 변수는 타입만 다를 뿐, 동일한 Cat 객체를 참조한다. Cat cat = new Cat(); Animal animal = cat; cat == animal // true 부모 타입으로 자동 변환 이후에는 부모 클래스에 선언된 필드 및 메소드만 접근 가능하다. 예외적으..

    [Java] 상속(inheritance)

    07 상속 07-1 상속 시작하기 전에 상속은 이미 개발된 클래스를 재사용하여 새로운 클래스를 만들기 때문에 중복되는 코드를 줄여준다. 부모 클래스 한 번의 수정으로 모든 자식 클래스까지 수정되는 효과가 있어 유지보수 시간이 줄어든다. 클래스 상속 자식 클래스 선언 시 부모 클래스를 선택한다. extends 뒤에 부모 클래스 기술한다. class 자식 클래스 extends 부모 클래스 { // 필드 // 생성자 // 메소드 } 여러 개의 부모를 상속할 수 없다. 부모 클래스에서 private 접근 제한을 갖는 필드와 메소드는 상속 대상에서 제외된다. 부모와 자식 클래스가 다른 패키지에 존재할 경우 default 접근 제한된 필드와 메소드 역시 제외 부모 생성자 호출 자식 객체 생성할 때 부모 객체가 먼저..

    [Java] 패키지와 접근 제한자

    Chapter 06 클래스 06-1 객체 지향 프로그래밍 06-2 필드 06-3 생성자 06-4 메소드 06-5 인스턴스 멤버와 정적 멤버 06-6 패키지와 접근 제한자 06 클래스 06-6 패키지와 접근 제한자 시작하기 전에 패키지의 물리적인 형태는 파일 시스템의 폴더이다. 프로젝트 개발 시 클래스를 체계적으로 관리하기 위해 패키지를 사용한다. 단순 폴더 기능뿐만 아니라 클래스의 일부분으로, 클래스를 유일하게 만들어주는 식별자 역할을 한다. 클래스 이름이 동일하더라도 패키지가 다르면 다른 클래스를 인식한다. 클래스의 전체 이름은 패키지+클래스를 사용하여 다음과 같이 표현한다. 상위패키지.하위패키지.클래스 패키지 선언 해당 클래스가 어떤 패키지에 속할 것인지를 선언한다. package 상위패키지.하위패키..

    [Java] 인스턴스 멤버와 정적 멤버, 싱글톤, final

    Chapter 06 클래스 06-1 객체 지향 프로그래밍 06-2 필드 06-3 생성자 06-4 메소드 06-5 인스턴스 멤버와 정적 멤버 06-6 패키지와 접근 제한자 06 클래스 06-5 인스턴스 멤버와 정적 멤버 시작하기 전에 인스턴스 멤버: 객체마다 가지고 있는 멤버 인스턴스 필드: 힙 영역의 객체마다 가지고 있는 멤버, 객체마다 다른 데이터를 저장한다. 인스턴스 메소드: 객체가 있어야 호출 가능한 메소드, 클래스 코드(메소드 영역)에 위치하지만, 이해하기 쉽도록 객체마다 가지고 있는 메소드라고 생각해도 된다. 정적 멤버: 객체와 상관없는 멤버, 클래스 코드(메소드 영역)에 위치 정적 필드 및 상수: 객체 없이 클래스만으로도 사용 가능한 필드이다. 정적 메소드: 객체 없이 클래스만으로도 호출 가능..

    [Java] 메소드(method)

    Chapter 06 클래스 06-1 객체 지향 프로그래밍 06-2 필드 06-3 생성자 06-4 메소드 06-5 인스턴스 멤버와 정적 멤버 06-6 패키지와 접근 제한자 06 클래스 06-4 메소드 시작하기 전에 메소드(method)란? 객체의 동작에 해당하는 중괄호 {} 블록을 의미한다. 메소드를 호출하면 중괄호 블록에 있는 모든 코드들이 일괄적으로 실행된다. 메소드 선언 메소드 선언은 선언부(리턴타입, 메소드 이름, 매개 변수 선언)와 실행 블록으로 구성된다. 이때, 메소드 선언부를 메소드 시그니처라 한다. 1. 리턴 타입 메소드를 실행한 후 결과값의 타입을 말한다. 리턴값은 있을 수도 없을 수도 있다. 리턴값 있을 경우 리턴 타입이 선언부에 명시되어야 한다. 리턴값 존재 여부에 따라 메소드 호출 방..

    [Java] 필드(Field)와 생성자(Constructor)

    Chapter 06 클래스 06-1 객체 지향 프로그래밍 06-2 필드 06-3 생성자 06-4 메소드 06-5 인스턴스 멤버와 정적 멤버 06-6 패키지와 접근 제한자 06 클래스 06-2 필드 시작하기 전에 필드(Field) 란? 객체의 고유 데이터, 객체가 가져가야 할 부품, 객체의 현재 상태 데이터 등을 저장하는 곳을 의미한다. 필드 선언 클래스 중괄호 {} 블록 어디서든 존재 가능하다. 생성자와 메소드 중괄호 블록 내부에는 선언 불가하다. 변수와 선언 형태 유사하나 변수 아님에 주의한다. 타입 필드 [ = 초기값]; 타입에는 기본 타입과 참조 타입이 모두 올 수 있다. 초기값은 주어질 수도, 생략할 수도 있다. 초기값 지정되지 않은 필드는 객체 생성 시 자동으로 기본 초기값 설정된다. 필드 사용..

    [Java] 객체 지향 프로그래밍

    Chapter 06 클래스 06-1 객체 지향 프로그래밍 06-2 필드 06-3 생성자 06-4 메소드 06-5 인스턴스 멤버와 정적 멤버 06-6 패키지와 접근 제한자 06 클래스 06-1 객체 지향 프로그래밍 시작하기 전에 객체(Object)란? 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 1) 자신의 속성을 가지고 있고 2) 식별 가능한 것을 말한다. ex) [사람] 속성: 이름, 나이 / 동작: 웃다, 걷다 ex) [자동차] 속성: 색깔, 모델명 / 동작: 달린다, 멈춘다 여기서 속성은 필드(filed), 동작은 메소드(method) 객체 모델링(Object Modeling)이란? 현실 세계의 객체를 소프트웨어 객체로 설계하는 것을 말한다. 객체의 상호작용 객체들은 각각 독립적으로 ..