본문 바로가기
Web programming/JAVA

간략하게 자바 개념 정리 2

by Skilly 2020. 4. 2.

 

추후 업데이트 하겠지만, 잘못된 점이나 조언이 있으시다면 말씀 부탁드립니다. 감사합니다.

 

 

01. 배열

배열은 자료형의 집합이며, 배열의 길이는 고정되어 있다. ([ ]안에 길이 값이 없으면 컴파일 오류 발생)  
배열의 값에 접근하려면 인덱싱을 이용한다. (0부터 숫자를 센다) 

int[] nums = {1, 2, 3, 5, 7, 9};  // 표기1

int[] nums = new String[7];  // 표기2
nums[0] = 1; 
nums[1] = 2; 
nums[2] = 3; 
. . .


String[] weeks = {"월", "화", "수", "목", "금", "토", "일"};  // 배열이 만들어졌다면
for (int i=0; i<weeks.length; i++) {   // for문으로 배열 값을 돌리고, 배열의 길이를 구할 때는 length를 이용
      System.out.println(weeks[i]); 
}

 

 

02. 접근제어자

접근제어자(access modifier)는 정보 은닉을 위해 클래스 외부에서의 접근을 허용하지 않도록 한다.

접근제어자는 public, private, protected, default가 있으며 다음의 순으로 보다 많은 접근을 허용한다.

 

private → default protected public

 

출처 https://opentutorials.org/course/1223/6061

 

 

 

03. 데이터 구조화

구조 : 계층화된 그룹(묶은 것)으로 만들어진 쳬계

구조화 : 여러 개체들을 그룹으로 묶어서 만든 것 (효율성, 단순화)

구조화 장점 : 데이터들을 원하는 단위로 묶어서 설명할 수 있어 구현 단위가 간소해지고 직관적으로 바뀜

 

 

 

04. Object, Instance

클래스(Class) : 객체를 만들기 위한 틀(Frame)이자 설계도이다.

객체(Object) : 클래스를 통해 속성과 기능을 한데 묶은 집합이다.
 - 속성(property) : 특성(attribute), 상태(state), 필드(field), 멤버변수(variable)
 - 기능(function) : 메서드(method), 행동(behavior), 함수(function)

인스턴스(Instance) : 클래스를 통해 만들어진 객체를 그 클래스의 인스턴스라고 하며, 클래스가 갖고있는 메소드를 상속 받는다.
 - 인스턴스화 : 클래스를 통해 객체인 인스턴스를 생성하는 과정

즉, 인스턴스는 객체이며 객체는 클래스를 통해 만든다.

 

 

 

05. 메소드 Method

메소드가 가지는 능력 : 반복되는 연산을 묶어 변수로 단순화 시키며, 규모가 큰 코드를 나눠서 만들 수 있다. (재사용, 집중화) 

 

메소드 사용 : 메인 함수 밖에 두고, 그것을 호출해서 사용한다. (함수 호출&리턴)

메소드 이름 : 
 - 기능명+(기능을구현할때쓰는)재료명
 - 함수명 첫글자는 무조건 소문자! 

 - 단어가 여러개 쓰일경우, 낙타표기법(카멜표기법) ex. printLottoNum()

 - 국어식 어순 > 영어식 어순 > 영문표기

     ex. 로또번호 생성 > 생성 로또번호 > genLotto 

 

반환 하는 값의 유무 (viod : 비어 있는 / 리턴 값이 없음) : 
 - 리턴 값이 없을 때 :
public static void name( ){  . . . return; }  // 리턴쓰면 강제 종료됨 

 - 리턴 값이 있을 때 : public static int add( ){  }  // void를 제외하고 작성

 

static 메소드 : static 메소드에 인스턴스 변수는 접근 불가하고, static 변수는 접근이 가능하다.

 

getter/setter 메소드 : private로 외부 접근을 제한할 경우에는 getter/setter 메소드를 이용하여 접근한다.

(클래스에 선언된 변수를 외부에서 수정하려면 인스턴스를 생성 후 해당 변수를 호출해서 할수 있는데, 이런 방법으로 작업할 경우 보안에 취약하기때문에 private로 외부 접근을 제한하도록 하는 것이 바람직하다.)

 - getter 메소드 : 리턴 값이 있어야 하고, 매개변수(인자)가 없어야 한다. 
 - setter 메소드 : 리턴 값이 없어야 하고, 매개변수(인자)가 있어야 한다.

 

 

 

06. 오버로딩, 오버라이딩

오버로딩 : 이름은 같지만 매개변수가 다른 메소드.
하나의 이름을 갖는 메소드이지만
매개변수의 유형과 개수가 다르게 해서, 같은 이름의 메소드를 여러개 가질 수 있도록 한다.

 

오버라이딩 : 상위 클래스로부터 상속 받은 메소드를 재정의 하는 것.

오버라이딩한 메소드는 하위 클래스에서 호출 시, 상위 클래스의 메소드보다 우선으로 호출된다. 
 - 함수를 호출하여 재사용 @Override

 - 상위 클래스 사용 시 'super 상위클래스명' 기재

 

 

 

07. 캡슐화

캡슐 : 데이터 구조와 함수를 하나로 묶은 것

캡슐화 : 여러 개체들을 그룹으로 묶어서 만든 것

(효율성, 단순화)변수와 개체수가 많아지는 경우, 데이터를 구조화하여 사용함으로서 캡슐화

 

 

 

08. 상속

부모클래스를 상속받아 (자식 클래스에서 정의하지 않은 메소드이지만 부모 클래스에 있는 메소드라면) 사용할 수 있다. 상속받은 메소드에 추가 작업을 한다.

부모클래스를 상속 받을 때는 extends 키워드를 사용한다. (부모클래스 extends 자식클래스) 

 

is a (상속)관계 예를들어 Cat클래스는 Animal클래스를 상속 받았을 때, Cat클래스는 Animal클래스에 하위개념으로서 포함 되기 때문에 Cat is a Animal이라고 할 수 있다. 이런 관계를 is a 관계라고 한다.

ex. 냉장고 is a 가전제품

부모클래스의 변수와 메소드를 호출 할 수 있다.

 

has a (포함)관계 : 계층화된 그룹(묶은 것)으로 만들어진 체계이며, 다른 객체를 포함하여 그 객체의 기능을 사용한다.

 

 

 

09. 인터페이스

직접 사용할 수 없는 접근할 수 없는 분리돼있는 것들을 이용하거나 연결하기 위한 접속 도구
(인터 = 사이를 연결한다  |  페이스 = 대면) 직접 만나는 사이의 도구. 

즉, 분리돼있는 장치를 간접적으로 연결하기 위한 접속 도구

 

인터페이스 명 : 행위를 나타내는 명 (Movable X)


인터페이스 구현 : 인터페이스를 구현하는 클래스 작성 방법

   1. 외부 클래스로 구현하기
   2. 내부(-inner, nested,-중첩) 클래스로 구현하기
   3. 메소드 내부 클래스로 구현하기
   4. 메소드 내부 익명 클래스로 구현하기

 

10. 추상클래스

공통점을 찾아 추상화 시켜서 사용하는 것이다. (인터페이스와 다르게 다중 상속 불가)

예를들어 고양이, 강아지, 펭귄, 사슴, 기린은 모두 동물이라는 공통점이 있으며 동물이라고 추상화 시켜서 사용할 수 있다. (is a 관계)


추상클래스 명 : 공통분모 (ex. 전투기, 적기 등의 공통분모는 비행기)

 

 

11. 예외처리

예외 오류 : 예외적(프로그램 외에서 오류가 발생 ; 코드로 해결할 수 없는)으로 발생하는 오류

예외를 처리한다는 것의 의미 : 오류가 발생한 상황을 알려준다.

 

 

예외처리 방식 1. try, catch문 + finally 
try문에서 예외가 발생하지 않으면 catch문은 수행되지 않고, try문의 내용을 수행 중에 예외가 발행하면 예외에 해당하는 catch문이 수행된다.

finally : try, catch문이 실행되지만 어떤 예외가 발생하더라도 반드시 실행되어져야 할 필요가 있는 상황에서는 catch문에 이어 finally를 추가하면 된다.

 

 

예외처리 방식 2. throws ~

예외 떠넘기기로, 함수 뒤에 기재 아래 키워드를 기재하여 발생할 수 있는 예외를 미리 명시한다.

 

- throws ~ : 메소드를 호출한 곳으로 예외를 떠넘길 때 사용하는 키워드로 throws 뒤에는 떠넘길 예외클래스를 쉼표로 구분해서 나열 및 표기한다.


- extends Exception : 물려받은 기능을 없지만, 공통된 객체를 받는다.

try { // 예외처리  // 지역화 
	result = Calculator.add(103, 3); 
	result2 = Calculator.sub(10, 33); 
} 
catch(백을넘는예외 e) { 
	System.out.println("죄송합니다. 예기치 않은 오류 발생했습니다."); 
} 
catch (Exception e) { // 모든 캐치블럭을 예외처리 함.- 디폴트 느낌! ; 위에 특화된 캐치문(오류 알림) 
	System.out.println("죄송"); 
} 
finally { 
	System.out.println("마지막 정리할 것이 있으면"); 
} 

Exception
RuntimeException
컴파일 타임 예외 (반드시 예외처리하라고 강요할때) 
런타임 예외 (실행해봐야 알수있음/예외에 대한 오류를 쉽게 잡지 못함)

반응형