일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Next.js
- react
- app:compiledebugkotlin
- array
- 페이지네이션
- 글또10기
- 스크롤이벤트
- 이진탐색
- generic
- 리액트네이티브아이콘
- map
- 타입스크립트
- TS
- Filter
- extends
- javascript
- 상속
- 안드로이드빌드에러
- Spring
- interface
- async
- app.post
- materialicons
- 슬라이딩윈도우
- reactnative
- mainapplication.kt
- 배열중복요소제거
- set
- supabase 페이지네이션
- meatadata
- Today
- Total
rhanziy
Java언어 특징 정리 본문
학원다닐때 열심히 이해하려고 노력했던 부분! 노트에 메모한 것들 다시 한번 복습할겸 작성한다.
뭐든 이해를 해야 습득하는편.....
변수선언?
저장된 공간에 참조해서 데이터를 사용한다.
자료형 + 변수명
자료형?
데이터 형 + 공간의 크기 지정
기본자료형 : 정수형, 실수형, 문자형, 불리언형 > 연산자 사용가능~!
객체형 : 첫글자는 대문자로 ex) String
객체생성
new 연산자로 메모리안에 객체의 주소값 생성
객체의 주소값을 저장할 때는 레퍼런스 변수를 선언한다.
객체의 메서드를 호출할때는 레퍼런스변수.메서드명( );
클래스 영역 안에 입력한 것을 객체의 필드 = 객체의 속성 = 객체의 데이터 = 전역변수라고 한다.
클래스를 정의하는 순서
1. 객체모델링 2. 코드 가이드 작성 3. 클래스 정의 4. 객체 생성 5. 객체의 멤버 사용
패키지(클래스들의 묶음)명을 정할때
보통 회사 도메인의 역순으로 시작하며 마지막에 클래스의 역할 작성
1. 데이터베이스 관련 처리(연동, SQL처리) - .model, .dao
2. 비즈니스로직(데이터) 처리 - .service, .business
3. 공용 클래스 - .common, .util
4. 데이터 관련 - .dto, .vo
메서드를 정의하는 순서
1. 접근제한자 2. 반환형(return) 3. 메서드 명 4. 매개변수 리스트(전달인자, 파라미터)
메서드 파라미터의 판단기준
메서드를 실행할 때 마다 '매번 다르게 들어오는 데이터'인가, '필수적인 데이터'인가.
자바에서 사용하는 변수의 종류
- 로컬변수(지역변수) : 메서드 영역 내부에 변수 선언. 메서드가 종료되면 소멸된다
- 인스턴스변수(전역변수) : 클래스 영역에 변수선언. 객체를 생성할 때 저장공간이 만들어진다. 객체간에 독립적인 저장공간을 가지며 서로 다른 값을 가진다.
- 스태틱변수: static을 붙여 변수를 선언한다. 객체를 생성할 때 저장공간이 만들어지고 객체간 공유되는 저장공간을 가진다.
데이터 외부주입 방법
1. 생성자(Constructor) : 프로그램이 실행될 때 꼭 필요한 데이터를 미리 정의함(주로 private로 선언!)
2. getter and setters : 프로그램이 운영되면서 주입받는 데이터 ex) 사용자가 입력폼에 입력한 데이터
자바언어의 특징
- 캡슐화(정보 은닉): 연관된 속성(데이터)과 메서드를 논리적으로 묶어놓은 것이며, 객체의 속성을 보호하기 위해 다른 객체의 접근을 제한하는 접근 제한자의 기능을 제공한다.
- 상속성: 사용자의 소프트웨어에 대한 요구사항은 늘어나지만 사용주기는 짧아짐에따라 개발기간은 점차 길어지는 현상이 발생했다. 이 위기를 극복하기 위해 나온 개념이 상속이다. 상속성은 하위 클래스에서 상위 클래스의 코드를 재사용하고 자신만의 속성(데이터)과 메서드를 추가적으로 덧붙임으로써 상위 클래스의 코드를 기반으로 확장(extends)하여 새로운 형태의 클래스로 발전하는 것이다.
- 3. 추상화(객체모델링): 일반적인 관념을 객체화시켜 구체적인 클래스로 정의하는 것으로 객체 모델링이라고 할 수 있다.
- 4. 다형성: 같은 이름을 가진 메서드가 매개변수의 개수와 매개변수의 자료형에 따라 구분되어 다양한 기능을 수행(메서드 오버로딩)하는 것을 말하며, 상속관계에 있는 클래스 사이에서 동일한 이름의 객체형 변수에 여러 개의 값을 가지거나 같은 이름의 메서드가 여러 개의 기능을 가지는 것을 말한다.(업 캐스팅과 메서드 오버라이딩)
+ 상속관련 추가 정리
상속 = 재사용 + 확장
1. 상위클래스의 데이터와 기능을 모두 재사용하고 새로운 기능만 하위클래스에서 추가(확장)한다.
2. 상속을 해주는 대상을 슈퍼클래스, 코드를 재사용하는 클래스를 하위클래스라고 지칭한다.
메서드 오버라이딩(Method Overriding)
1. 상속관계에 있는 슈퍼클래스와 서브클래스 사이에 성립한다.
2. 서브클래스에서 슈퍼클래스의 메서드를 재정의 하는 것이다.
3. 슈퍼클래스의 메서드와 접근제한자, 시그니처(메소드명, 매개변수 자료형/개수)가 일치해야한다.
4. 메서드 오버라이딩 시, 슈퍼클래스의 메서드는 은닉되고 서브클래스의 메서드만 사용된다.
5. static메서드, private메서드, final예약어를 사용한 메서드는 상속이 되지 않기때문에 오버라이딩이 불가능하다.
* 상속에서 사용하는 접근제한자 = protected (다른 패키지에서는 접근불가)
추상메서드(abstract메서드)는 메서드의 머리만 있는 메서드이며 상위클래스에서 정의 시 "강제로" 하위클래스에서 메서드 오버라이딩 해야한다.
추상메서드를 멤버로 포함한 클래스는 추상클래스 또는 인터페이스로 정의한다.
1. 추상클래스: 객체생성X
- 기본문법 / public abstract class <클래스명> { }
- 멤버 / 인스턴스변수, 상수, public메서드, abstract메서드
2. 인터페이스: new연산자로 레퍼런스 변수선언X
- 기본문법 / public interface <인터페이스명> { }
- 멤버 / 상수, abstract메서드
* 추상클래스는 단일상속만 가능하고 인터페이스는 다중상속이 가능하다.
ex) public class 서브클래스 extends 슈퍼클래스 implements 인터페이스1, 인터페이스2 . . .
+ 다형성관련 추가 정리
1. 메서드 오버로딩(Method Overloading)
같은 이름을 가진 메서드가 매개변수의 개수와 매개변수의 자료형에 따라 구분되어 다양한 기능을 수행
2. 레퍼런스 형변환
- 업캐스팅: 상위클래스 객체에 하위클래스 객체를 전달하여 파라미터의 다형성 구현(묵시적 형변환)
* 상위클래스로 참조영역이 축소된다.(예외: 메서드 오버라이딩) 상속의 기능이 하위로 전달되지않고 상위클래스의 코드를 사용한다.
- 다운캐스팅: 업캐스팅 된 것을 다시 원상태로 돌리는 것. 명시적 형변환이 필요하고 업캐스팅이 선행되어야한다.
캐스팅(Casting)이란?
타입을 변환하는 것을 말하며 형변환이라고도 한다. 자바의 상속 관계에 있는 부모와 자식 클래스 간에는 서로 간의 형변환이 가능하다.
*캐스팅을 사용하는 이유(오버 라이딩의 목적) : 하나의 인스턴스(슈퍼클래스)로 서브클래스를 전부 관리할 수 있다. *
'Java' 카테고리의 다른 글
JSTL 개념, 문법, 셋팅 (0) | 2023.03.30 |
---|---|
스프링 파일 업로드 관련 (0) | 2022.09.05 |
스프링 주요 특징 (0) | 2022.09.05 |
스프링 pom.xml, dbcp 설정 정리 (0) | 2022.09.05 |
공통관심사항(cross-cutting concern)과 AOP(Aspect Oriented Programming) (0) | 2022.01.06 |