728x90

Java 44

추상 클래스 및 추상 메서드/final

추상 클래스 - 실체를 생성하지 못하는 클래스입니다. - 추상 메서드 하나만 있어도 추상클래스가 됩니다. - 절대클래스 : 객체 생성이 가능한 클래스입니다. #추상 클래스 vs 인터페이스 - 두 타입 모두 추상 메서드들로 구성됩니다. 하지만 역할이 다릅니다. - 추상 클래스는 하위 클래스 설계 및 중복코딩 방지를 위한 상속을 목적으로 작성됩니다. - 인터페이스는 객체 사용법 기술을 목적으로 한 다형성을 목적으로 작성됩니다. 추상 메서드 - 호출만 가능하고 실행될 수 없는 메서드로 몸통을 가지고 있지 않습니다. - 주로 조상에서 만듭니다. - 추상 메서드를 구현한 자손의 실체 메서드가 동적 바인딩 되어 실행 되어 집니다. final - final 클래스 : 상속을 못하는 클래스로 주로 String이 있습니..

중첩 클래스와 중첩 인터페이스

중첩 클래스 - 클래스 내부에 정의하는 클래스입니다. - 별도의 자바 파일을 사용하지는 않지만 번역 후 class 파일을 생성합니다. - 어느 한 객체/클래스만 관계를 가질 경우 별도의 파일을 생성하는 것보다 해당 클래스에서 내부적으로 생성하는것이 유용합니다. #인스턴스 멤버 - static이 없을 경우입니다. - 클래스를 포함한 외부 클래스가 별도로 생성을 해주어야 정의됩니다. #클래스 멤버 - static이 있는 경우입니다. - 외부 클래스가 생성될 때 동시에 생성이 되어 정의됩니다. #로컬 멤버 - 메서드 블록에 작성되어진 경우 입니다. - 메서드 블록이 수행될 때 별도로 정의가 되어집니다. - 로컬 변수와 형식 매개변수는 메서드 시작시 스택 프레임 안에 방을 마련하고 내포된 클래스는 힙영역에 방을..

접근 제한자와 패키지

접근제한자 - 캡슐화를 실현하기 위해 접근을 제한하는 수단입니다. - 클래스 접근 제한은 public과 default가 있습니다. - public : 접근 제한이 없습니다. - protected : 상속 관계에서 접근 제한을 후손으로만 제한합니다. - default : 접근제한자를 지정하지 않을 경우 자동으로 default가 되며 패키지 내부에서만 접근이 가능합니다. - private : 자신의 클래스에서만 접근이 가능합니다. 패키지 - 자바 파일들을 관리하기 위한 개념으로 물리적으로 폴더를 사용합니다. - package문 : 어떤 패키지에 속하는지 자바 파일 첫줄에 표시합니다. - import문 : 다른 타입을 지정할 때는 패키지명까지 같이 써서 사용을 해야하지만 자바 파일 상단에 import를 이용해..

오버로딩과 오버라이딩

오버로딩 - 하나의 클래스에 동일 이름값의 메서드와 생성자들이 존재 하는 것을 말합니다. - 이때 각 구분은 이름값 + 매개변수 개수 + 매개변수 타입 + 매개변수 순서 등으로 구성된 값이 사용되고 이것이 실질적인 식별자 역할을 합니다. 오버라이딩(재정의) - 부모 클래스의 멤버 혹은 인터페이스의 멤버를 자식 또는 구현 클래스에서 재정의 하는 것을 말합니다. - 자식 객체의 참조 값을 부모 타입으로 업 캐스팅 후 부모 메서드를 호출하면 오버라이딩 된 자식 메서드가 동적 바인딩(런타임시 결정)되어 수행이 되는데 이를 통해 다형성을 구현합니다. this와 super #this - 현재 객체를 참조할 수 있습니다. - 람다의 경우 람다 객체를 사용하는 객체의 값을 참조합니다. - 주로 매개변수와 필드의 이름이..

클래스와 객체의 멤버

객체 멤버 - 객체의 모든 내용은 클래스에서 인스턴스 멤버로 기술합니다. - 참조변수를 사용해 먼저 객체에 접근 후 점 연산자를 사용하여 멤버 이름값으로 객체 멤버에 접근 할 수 있습니다. 클래스 멤버 - 클래스의 모든 내용(구현 객체에 공통적으로 들어가는 내용)은 클래스에서 static 멤버로 기술합니다. - 클래스 이름값을 사용하여 클래스에 접근 후 점 연산자를 사용해 멤버 이름값으로 클래스 멤버에 접근할 수 있습니다. static 블록 - 문장 블록으로 클래스 로딩 시에 동작 되며 주로 클래스 초기화에 사용됩니다. 프로퍼티 - 필드, 게터, 세터로 구분되어져 있습니다. - 외부로부터 보호하기 위해 필드는 private으로 지정하고 게터,세터를 통해 접근하는 방식으로 사용합니다. 멤버의 종류 # 필드..

클래스와 객체

객체지향 프로그래밍 - 실 객체를 SW 객체로, 사건을 메시지로 모델링 하여 프로그램을 제작하는 기술입니다. - 이벤트 드리븐을 주로 객체지향으로 작성합니다. 절차지향 프로그래밍 - 프로그램 드리븐을 주로 절차지향으로 작성합니다.. - 연산 프로그래밍시 주로 사용 되며 UI가 없는 프로그램입니다. 클래스화(Classification) - 실 객체들을 모두 모아 하나의 클래스로 기술 하는것을 말합니다. - 모든 객체는 클래스 기반으로 생성됩니다. - 이때 객체의 내용 뿐만 아니라 클래스의 내용도 포함하므로 주의 해야 합니다. 추상화(Abstraction) - 답을 구하는 것과 관련이 적거나 없는 부분을 요약 및 생략하여 간단하게 만드는 기술입니다. - 설계 및 구현의 복잡성을 제거하는데 모든 부분을 개발자..

메서드

메서드는 머리(header)와 몸통(body)로 구성되어져 있습니다. 머리 - 메서드의 인터페이스 역할을 수행합니다. - 호출에 필요한 정보들로 구성되어져 있습니다. - 메서드 시그니처(리턴타입, 메서드 이름, 형식 매개변수의 나열 등)는 메서드의 식별 및 머서드 오버라이딩에 사용됩니다. - abstract : 추상을 나타내며 몸통이 없습니다. - static : 클래스에 소속이냐 객체에 소속이냐를 나타냅니다. - final : 오버라이딩 가능 여부를 나타냅니다. 사용될 경우 오버라이딩 될 수 없습니다. - 접근제한자 : 캡슐화에 사용되며 public, private 등이 있습니다. - 리턴타입 : 메서드 종료를 의미하며 반환할 값이 없을 경우 void를 사용하는데 이때 쓰레기 값이 저장이 되므로 사용을..

학습(구)/JSP 2021.03.18

제어문

제어문 - 실행문들은 기본적으로 순차적으로 수행됩니다. - 제어문을 이용할 경우 순차적 수행 흐름을 변경할 수 있습니다. - 선택문과 반복문은 조건절을 사용해 제어하고 분기분은 선택문과 반복문 내부에 포함되어 제어하는데 사용합니다. 표기 문법에 따른 분류 - ";"을 이용하여 문장 종료를 표기하며 여러개의 문장을 묶어 하나의 문장으로 만들 경우 {}를 사용합니다. - 스레드 스택의 메서드 블록 스택 프레임이 생성되고 이 내부에 다시 프레임을 형성하게 되는데 로컬 변수를 예로 들 수 있습니다. 문장 기능에 따른 분류 - 정의/선언문은 프로그램 요소를 생성합니다. - 표현식문은 ";"를 이용해 문장으로 변경합니다. - 제어문은 순차적 수행 흐름을 변경합니다. 선택문 - 조건절을 사용해 수행될 문장을 선택할 ..

타입 변환과 다형성 구현

타입 변환 # 자동 변환 - 연산을 위해 기본 타입을 일치 시키며 컴파일러가 수행합니다. - 조상 타입 혹은 인터페이스 타입에 자식 타입을 대입 할 경우 자동으로 업 캐스팅을 수행합니다. - 기본 타입에서 Wrapper 타입(클래스 타입) 으로 변환은 boxing이라 하며 실체를 사용할 때 변환합니다. - Wrapper타입에서 기본 타입으로 변환은 unboxing이라 하며 값을 사용할 때 변환 합니다. # 강제 변환 - 캐스트 연산자 사용에 의한 강제 변환 입니다. - 참조 타입에서 캐스팅을 잘 못할 경우 ClassCastException이 발생할 수 있기 때문에 instanceof 연산자를 사용해 미리 확인 후 사용하는 것이 좋습니다. - 캐스팅을 성능을 저하 시키기 때문에 꼭 필요한 경우를 제외하고는..

참조 타입

기본 타입 - JVM에서 제공하는 8개의 데이터 타입의 종류를 의미합니다. - int,float 등등 - 기본 데이터 타입은 변수의 값을 직접 저장하여 가지고 있습니다. - 기본 데이터 타입 변환은 실수값 3.5 -> 정수인 3으로 직접 값을 변경합니다. 참조 타입 - 개발자 정의 타입으로 개발자가 직접 작성한 타입입니다. - 개발자 정의 타입의 실체를 변수에 저장하게 되면 실체는 힙영역에 존재하고 실체의 주소 값이 변수에 저장됩니다. - 참조 타입 변환은 참조 값의 의미가 변경되는데 즉 가리키는 주소가 변경되는 것이 아닌 원래 주소가 가리키는 곳에서 사용할 수 있는 범위 즉 멤버들이 달라지는 것을 의미합니다. 개발자 정의 타입 - 별도의 java파일을 생성하여 해당 내용을 작성합니다. - 각 타입은 실..