티스토리

2WEEKS
검색하기

블로그 홈

2WEEKS

insight-bgh.tistory.com/m

byeongoo 님의 블로그입니다.

구독자
20
방명록 방문하기

주요 글 목록

  • [Java] Thread(쓰레드) - 5 1. 쓰레드 동기화 싱글 쓰레드 프로세스의 경우 프로세스 내에서 단 하나의 쓰레드만 작업하기 때문에 프로세스의 자원을 가지고 작업하는데 별 문제가 없지만, 멀티 쓰레드 프로세스의 경우 여러 쓰레드가 같은 프로세스 내의 자원을 공유해서 작업하기 때문에 서로의 작업에 영향을 주게된다. 만일 쓰레드A가 작업하던 도중에 다른 쓰레드B에게 제어권이 넘어갔을 때 , 쓰레드 A가 작업하던 공유 데이터를 쓰레드 B가 임의로 변경하였다면, 다시 쓰레드 A가 제어권을 받아서 나머지 작업을 마쳤을 때 원래 의도하던 것과는 다른 결과를 얻을 수 있다. 이러한 일이 발생하는 것을 막기 위해서 한 쓰레드가 특정 작업을 끝마치기 전까지 다른 쓰레드에 의해 방해받지 않도록 하는 것이 필요하다. 그래서 도입된 개념이 바로 '임계 영역.. 공감수 0 댓글수 0 2022. 6. 2.
  • [Java] Thread(쓰레드) - 4 1. 데몬 쓰레드 데몬 쓰레드는 다른 일반 쓰레드의 작업을 돕는 보조적인 역할을 수행하는 쓰레드이다. 일반 쓰레드가 모두 종료되면 데몬 쓰레드는 강제적으로 자동 종료되는데, 그 이유는 데몬 쓰레드는 일반 쓰레드의 보조적인 역할을 수행하므로 일반 쓰레드가 모두 종료되고나면 데몬 쓰레드의 존재의 의미가 없기 때문이다. 이 점을 제외하고는 데몬 쓰레드와 일반 쓰레드는 다르지 않다. 데몬 쓰레드의 예로는 가비지 컬렉터, 워드프로세서의 자동저장, 화면자동갱신 등이 있다. 데몬 쓰레드는 무한 루프와 조건문을 이용해서 실행 후 대기하고 있다가 특정 조건이 만족되면 작업을 수행하고 다시 대기하도록 작성한다. package thread; public class ThreadEx10 implements Runnable { .. 공감수 0 댓글수 0 2022. 6. 2.
  • [Java] Thread(쓰레드) - 3 1. 싱글쓰레드와 멀티쓰레드 싱글 쓰레드 프로세스와 멀티 쓰레드 프로세스의 차이를 봐보자. 두 개의 작업을 하나의 쓰레드(th1)로 처리하는 경우와 두 개의 쓰레드(th1, th2)로 처리하는 경우를 가정해보자. 하나의 쓰레드로 두 작업을 처리하는 경우는 한 작업을 마친 후에 다른 작업을 시작하지만, 두 개의 쓰레드로 작업을 하는 경우에는 짧은 시간 동안 2개의 쓰레드가 번갈아가면서 작업을 수행해서 동시에 두 작업이 처리되는 것처럼 보인다. 하나의 쓰레드로 두 개의 작업을 수행한 시간과 두개의 쓰레드로 작업을 수행한 시간은 거의 같다. 오히려 쓰레드를 2개로 만들어서 사용한 경우가 더 오래걸린다. 그 이유는 쓰레드간의 컨텍스트 스위칭 비용이 추가로 걸리기 때문이다. 작업 전환을 할 때는 현재 진행중인 작.. 공감수 0 댓글수 0 2022. 5. 31.
  • [Java] Thread(쓰레드) - 2 1. 쓰레드의 구현과 실행 쓰레드를 구현하는 방법은 Thread 클래스를 상속 받는 방법과 Runnable 인터페이스를 구현하는 방법 2가지이다. 두가지 방법 모두 상관없지만 Thread 클래스를 상속 받으면 다른 클래스를 상속받을 수 없기 때문에 Runnable 인터페이스를 구현하는 방법이 일반적이다. class MyThread extends Thread { public void run() { /* 작업 내용 */ } // Thread 클래스의 run()을 오버라이딩 } class MyThread implements Runnable { public void run() { /* 작업 내용 */ } // Thread 클래스의 run()을 오버라이딩 } 2개의 방식으로 쓰레스를 만들고 호출해본다. packa.. 공감수 1 댓글수 0 2022. 5. 30.
  • [Java] Thread(쓰레드) - 1 1. 프로세스란? 프로세스란 간단히 말해서 "실행중인 프로그램"이다. 실행하면 OS로부터 실행에 필요한 자원(메모리)을 할당 받아 프로세스가 된다. 프로세스는 프로그램을 수행하는데 필요한 데이터와 메모리 등의 자원 그리고 쓰레드로 구성되어 있으며 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이 쓰레드이다. 따라서 모든 프로세스는 최소한 하나 이상의 쓰레드가 존재하며, 둘 이상의 쓰레드를 가진 프로세스를 "멀티쓰레드 프로세스"라고 한다. 하나의 프로세스가 가질 수 있는 쓰레드의 개수는 제한되어 있지 않으나 쓰레드가 작업을 수행하는데 개별적인 메모리 공간(호출스택)을 필요로 하기 때문에 프로세스의 메모리 한계에 따라 생성할 수 있는 쓰레드의 수가 결정된다. 실제로는 프로세스의 메모리 한계에 다다를 정.. 공감수 0 댓글수 0 2022. 5. 30.
  • [Java] 코딩 컨밴션 (Code Conventions ) 1. 코딩 규칙(Code Conventions)가 필요한 이유 소프트웨어를 개발하는 일련의 모든 과정에 들어가는 비용 중 80%가 유지보수에 쓰인다. 소프트웨어 유지 보수를 직접 개발한 개발자가 담당하는 경우는 거의 보기 힘들다. 코딩 규칙을 지키면 다른 개발자가 그 소스 코드를 처음 보았을 때 더 빨리 이해할 수 있게 도와주므로 소프트웨어의 가독성이 높아진다. 개발자가 자신의 소스 코드를 제품으로 팔려고 하면 자신이 작성한 다른 소스 코드들과 잘 어울리도록 패키지를 적절하게 구성할 필요가 있다. 2. 파일 이름 이 장에서는 흔하게 사용되는 파일 확장자와 파일 이름을 설명한다. 2.1 파일 확장자 파일 형태 확장자 자바 소스 .java 자바 바이트코드 .class 2.2 공통으로 사용되는 파일 이름 파일.. 공감수 0 댓글수 0 2021. 4. 11.
  • 인텔리제이 javadoc 문서 만들기 1. 인텔리제이 상단의 Tools에서 Generate JavaDoc을 선택합니다. 2. javadoc 생성을 위해서 아래 이미지와 같이 입력 후 OK 버튼을 클릭하면 Output directory에 java doc 파일이 생성됩니다.(html) Locale에는 ko_KR을 적어주고 Other command line arguments에는 "-encoding UTF-8 -charset UTF-8 -docencoding UTF-8"을 입력합니다. 3. javaDoc 결과 파일 공감수 0 댓글수 0 2021. 2. 22.
  • [Java] Garbage Collector 이번 포스팅은 우아한Tech의 던의 JVM의 Garbage Collector 영상 정리 및 다른 블로그들의 내용을 합쳐서 정리한 내용입니다. 1. Garbage Collector란? 동적으로 할당한 메모리 영역 중 사용하지 않는 영역을 탐지하여 해제하는 기능 Stack : 정적으로 할당한 메모리 영역 원시 타입의 데이터가 값과 함께 할당. Heap 영역에 생성된 Object 타입의 데이터 참조 값 할당. Heap : 동적으로 할당한 메모리 영역 모든 Object 타입의 데이터가 할당. Heap 영역의 Object를 가리키는 참조 변수가 Stack에 할당 Stack에 있던 데이터가 pop 되면서 날라가고, heap 영역에 객체 타입의 데이터만 남는데 이런 객체를 Unreachable Object라고 한다... 공감수 0 댓글수 0 2021. 1. 17.
  • JVM Stack & Heap 이번 포스팅은 우아한Tech의 무민의 JVM Stack & Heap 영상을 정리한 내용입니다. 1. C/C++의 문제점 C/C++는 컴파일 플랫폼과 타겟 플랫폼이 다를 경우, 프로그램이 동작하지 않는다. 여기서 환경(플랫폼) 이란 운영체제 + CPU 아키텍처를 말한다. 동일한 플랫폼에서 컴파일과 실행을 같이 한다면, 프로그램은 아무 문제 없이 동작한다. 다른 플랫폼에서 동작하게 하려면 타겟 플랫폼에 맞춰서 컴파일을 해야하는데 이를 "크로스 컴파일"이라 한다. 2. JVM으로 C/C++ 문제 해결 자바 바이트 코드는 타겟 플랫폼에 상관 없이 JVM 위에서 동작 JVM은 자바 바이트 코드를 실행할 수 있는 주체(기계) JVM이 플랫폼과 관련된 작업들을 대신 해주기 때문에 가능 물론, JVM은 타겟 플랫폼에 .. 공감수 0 댓글수 0 2021. 1. 17.
  • [Java] Comparable과 Comparator을 이용한 정렬 코딩을 하다보면 컬렉션에 들어있는 객체를 정렬해야 할때가 있다. 이때 객체의 정렬 기준을 "Comparable"이나 "Comparator"를 이용해서 명시해줄 수 있다. 1. Comparable Comparable 인터페이스는 정렬 수행 시 기본적으로 적용되는 정렬 기준이 되는 메소드를 정의하는 인터페이스이다. Java에서 제공되는 정렬이 가능한 클래스들은 모두 Comparable 인터페이스를 구현한다. 정렬 시에 이에 맞게 정렬이 수행된다. // Integer class public final class Integer extends Number implements Comparable { ... } // String class public final class String implements java.i.. 공감수 0 댓글수 0 2020. 7. 19.
  • [Java] 자바 Collection 1. Collection 이란? Collection 객체는 여러 원소들을 담을 수 있는 자료구조를 말한다. JCF(Java Collections Framework)는 컬렉션과 이를 구현하는 클래스를 정의하는 인터페이스를 제공한다. 다음은 Java 컬렉션 프레임워크의 상속구조를 나타낸다. Map의 경우 Collection 인터페이스를 상속받고 있지 않지만 Collection으로 분류된다. 2. Collection 인터페이스의 특징 2.1 Set 인터페이스 순서를 유지하지 않는 데이터의 집합으로 데이터의 중복을 허용하지 않는다. HashSet - 가장빠른 임의 접근 속도 - 순서를 예측할 수 없음 TreeSet - 정렬방법을 지정할 수 있음 2.2 List 인터페이스 순서가 있는 데이터의 집합으로 데이터의 .. 공감수 0 댓글수 0 2020. 6. 14.
  • [Java] 객체 값 복사 - clone() 예제 1. clone() clone() 메소드는 자신을 복제하여 새로운 인스턴스를 생성하는 일을 합니다. 기존의 인스턴스의 값은 보존하고 새로운 인스턴스를 만들어서 이 인스턴스를 이용해서 작업을 진행하면 편리한 경우가 종종 있습니다. 예를들어서 파라미터로 값을 넘겨야하는데, 이 인스턴스의 멤버변수의 값을 변경해야할 경우 기존 인스턴스가 변경될때 다른 코드에 영향을 줄 수 있으므로 이때 clone()을 사용하면 좋을꺼 같습니다. 2. clone() 예제 코드 clone()은 모든 클래스의 부모인 Object 클래스에 정의되어있습니다. 여기에 정의된 clone()은 단순히 인스턴스 변수의 값만을 복하기 때문에 참조 타입의 인스턴스 변수가 있는 클래스는 완전한 복제가 이루어지지 않습니다. 따라서 복제된 참조타입의 .. 공감수 0 댓글수 0 2020. 5. 31.
  • [Java-source quality] Redundant Modifier 다음과 같은 인터페이스를 작성하고 commit을 하자 코드 퀄리티 툴에서 경고 메시지를 주었습니다. import org.springframework.web.multipart.MultipartFile; public interface IFileService { public String deleteFile(String filePath) throws RuntimeException; public String restore(MultipartFile multipartFile) throws RuntimeException; } Warning:(9, 5) Modifier 'public' is redundant for interface methods redundant는 불필요한의 뜻으로 인터페이스의 메소드를 위한 publi.. 공감수 2 댓글수 0 2020. 5. 29.
  • [Java] JAVA API 도큐먼트 자바 API 도큐먼트 API (Application Programming Interface)는 라이브러리라고 부르기도 합니다. 바로 프로그래밍 개발에 사용되는 클래스 및 인터페이스의 모음을 말합니다. JAVA API 도큐먼트는 이러한 클래스와 인터페이스를 쉽개 찾아 이용할 수 있도록 문서화한 것을 말합니다. 개발자라면 api document를 직접 찾아서 볼 수 있어야합니다. 사이트 주소는 아래와 같습니다. https://docs.oracle.com/javase/8/docs/api/ Java Platform SE 8 docs.oracle.com JAVA API 도큐먼트는 크게 3부분으로 나누어져 있습니다. 좌측 상단 프레임 : 패키지 전체 목록 좌측 하단 프레임 : 패키지에 속하는 클래스와 인터페이스 중.. 공감수 0 댓글수 0 2020. 4. 3.
  • [Java] 제네릭(Generic) 1. 제네릭이란? 자바(Java)에서 제네릭(Generic)은 클래스 내부에서 사용하는 데이터의 타입(Type)을 클래스의 인스턴스를 생성할 때 결정하는 것을 의미합니다. 객체의 타입을 컴파일 시점에 체크하기 때문에 타입 안정성을 높이고 형 변환의 번거로움을 줄일 수 있습니다. 즉, 서로 다른 Type 정의에 복수의 Class를 정의하는것보다 제네릭을 통해 Class를 인스턴화할 때 인자와 함께 Type을 넘겨줌으로써 하나의 Class로 복수의 Type을 처리 할 수 있습니다. 아래 간략하게 제네릭(Generic)을 사용하여 선언된 클래스와 객체를 선언한 부분을 살펴보겠습니다. public class TestGeneric { public T sample; public void showYourType() .. 공감수 1 댓글수 0 2020. 3. 31.
  • [Java] HashMap 자바를 사용하면서 HashMap이란 용어를 들어보셨을겁니다. 오늘은 HaspMap에 대해서 정리를 한번 해보겠습니다. HashMap은 Map 인터페이스의 한 종류로서 Key와 Value값으로 데이터를 저장하는 형태를 가지고 있습니다. Map은 키(Key)와 값(Value)을 하나로 묶어서 저장하는 컬렉션 클래스들을 구현하는데 사용됩니다. Map에 종류에는 HashTable, HashMap, LinkedHashMap, SortedMap, TreeMap 등이 있는데 이들 객체 또한 Key, Value로 데이터를 저장합니다. 이중에서 오늘은 HashMap에 대해서 다뤄 보겠습니다. HashMap 또한 Map 인터페이스를 구현했기 때문에 Map의 속성을 모두 가지고 있고, 저장 방식 또한 동일합니다. 또한 해싱.. 공감수 0 댓글수 0 2020. 3. 26.
  • [Java] public static void main(String args[]) 분석 오늘은 자바 코딩을 할때 무의식적으로 치고 있는 public static void main(String args[]) 에 대해서 분석글을 작성해 봅니다. 자바를 배우면 가장 먼저 main함수를 작성하는데 그 의미에 대해서 제대로 파악을 하는게 좋을거 같습니다. 우선 각각의 키워드들을 분석해보겠습니다. 1. main Java는 어플리케이션이 실행되면 제일 먼저 메인(main)메소드를 실행합니다. Java와의 약속이라고 생각하시면 됩니다. 2. public 자바에는 4개의 접근 제어자가 있고 public은 그 중 하나입니다. public 접근 제어자는 어느 곳에서든 해당 객체를 참조할 수 있다는 의미입니다. 4가지 접근 제어자중 제약이 가장 약합니다. main 메소드를 public으로 지정하는 이유는 JVM.. 공감수 0 댓글수 0 2020. 3. 24.
  • WAR, JAR , EAR 파일 이란 자바를 사용하다보면 배포를 jar로 하거나 war 파일로 하는데 무슨 차이점이 있나 한번 알아보았습니다. 2가지 모두 어플리케이션 소스들을 배포할 시에 path 등의 설정에서의 애로사항을 제거하기 위해 탄생한 압축방식입니다. 이 압축파일들은 압축의 해제없이 JDK에서 각 파일들을 접근하여 사용할 수 있도록 설계되어있습니다. 이렇게 파일을 압축하는 이유는 파일의 용량이 줄어들고, 관리하기 편하기 때문입니다. 1. JAR(Java Archive, 자바 아카이브) JAR는 여러개의 자바 클래스 파일과, 클래스들이 이용하는 관련 리소스(텍스트, 그림 등) 및 메타데이터를 하나의 파일로 모아서 자바 플랫폼에 응용 소프트웨어나 라이브러리를 배포하기 위한 소프트웨어 패키지 파일 포맷입니다. 컴퓨터 사용자들은 JDK에.. 공감수 0 댓글수 2 2020. 1. 4.
  • [Java] 문자열 split 후 List에 넣기 문자열을 어떤 기준 예를 들면 ',' 단위로 잘라서 리스트에 넣어야할 경우 다음의 코드를 이용하면 쉽게 해결할 수 있습니다. // for문을 이용한 split -> list 변환 String str = "a,b,c,d,e,f,g"; List list = new ArrayList(); String[] splitStr = str.split(","); for(int i=0; i 공감수 4 댓글수 0 2019. 11. 8.
  • [Java] compareTo() 문자열 비교 함수 compareTo() 문자열의 사전순 값을 비교하여 int 값 리턴 예로 A > B 라고 가정하면, - A = A = 0 (동일한 경우) - A > B = 1 (좌측 값이 큰 경우) - B > A = -1 (좌측 값이 작은 경우) public void test(){ String str1 = "AA"; String str2 = "AA"; String str3 = "BB"; System.out.println(str1.compareTo(str2)); // 결과 0 System.out.println(str2.compareTo(str3)); // 결과 -1 System.out.println(str3.compareTo(str2)); // 결과 1 } 공감수 0 댓글수 0 2019. 11. 5.
  • [Java] 22. JAR (Java ARchive Files) 파일 자바로 개발을 하다보면 종종 JAR 파일을 마주 칠 수 있습니다. JAR 파일이란 무엇일까요? JAR (Java ARchive Files, 자바아카이브)는 여러개의 자바클래스 파일과, 클래스들이 이용하는 관련 리소스(텍스트, 그림 등) 및 메타데이터를 하나의 파일로 모아서 자바 플랫폼에 응용 소프트웨어나 라이브러리를 배포하기 위한 소프트웨어 패키지 파일 포맷입니다. 정리를 해보면 아래와 같습니다. - 일종의 자바 프로젝트 압축 파일 - ZIP 파일 압축 알고리즘을 기반으로 만들어짐 >> 반디집, 알집과 같은 zip 프로그램과 호환 가능 - JAR 파일은 웹브라우저에서 빠르게 다운로드할 수 있도록, 자바 애플릿을 위한 클래스, 이미지 및 사운드 파일들을 하나의 파일에 압축하여 담고 있는 파일이다. - 사용.. 공감수 0 댓글수 0 2019. 6. 4.
  • [Java] 21. 어노테이션 1. 어노테이션이란? 어노테이션은 클래스나 메소드 등의 선언시에 @를 사용하는 것을 말합니다. 어노테이션은 영어로 Annotation이며, 메타데이터 라고 불리기도 합니다. 메타데이터는 데이터에 대한 설명을 의미하는 데이터를 말합니다.(데이터에대한 데이터) ● 컴파일러에게 정보를 알려줌 ● 컴파일할 때와 설치시의 작업을 지정 ● 실행할 때 별도의 처리가 필요할 때 이런 경우에 사용합니다. 이와 같이 매우 다양한 용도로 사용할 수 있는 어노테이션은 클래스, 메소드, 변수 등 모든 요소에 선언할 수 있습니다. 2. 미리 정해져 있는 어노테이션 메타 어노테이션은 선언을 위해서 존재하기 때문에 일반적으로 사용 가능한 어노테이션은 다음의 5개입니다. (자바 1.8기준) ● @Override ● @Deprecate.. 공감수 0 댓글수 0 2019. 4. 20.
  • [Java] 20. 예외 처리(3) 1. throws 지금까지는 예외를 처리하는 방법을 배웠습니다. 이제부터는 예외를 발생시키는 방법을 알아봅시다. 정확하게 말하면 자바에서는 예외를 던질 수 있습니다. 다음 예제를 봅시다. package c.exception; public class ExceptionSample { public static void main(String[] args) { ExceptionSample sample = new ExceptionSample(); sample.throwException(13); } public void throwException(int number) { try { if(number>12) { throw new Exception("Number is over than 12"); } } catch(Exc.. 공감수 0 댓글수 0 2019. 4. 18.
  • [Java] 20. 예외 처리(2) 1. 두개 이상의 catch try-catch 문을 쓸 때 catch에 Exception e라고 아무 생각 없이 썼습니다. 이 catch 블록이 시작되기 전에 있는 소괄호에는 예외의 종류를 명시합니다. 다시 말해서, 항상 Exception e라고 쓰는 것은 아니라는 것입니다. 전 글에서 사용했던 예제를 활용하여 다음과 같은 클래스를 만들어 봅시다. package c.exception; public class ExceptionSample { public static void main(String[] args) { ExceptionSample sample = new ExceptionSample(); sample.multiCatch(); } public void multiCatch() { int[] intAr.. 공감수 0 댓글수 0 2019. 4. 18.
  • [Java] 20. 예외 처리(1) 1. 자바에서 매우 중요한 예외 자바에서는 예외라는 것이 있습니다. 예외를 모르면 자바를 모르는 것과 같다고 생각해도 됩니다. 자바에서는 예상과 다르게 동작을 하는 예외적인 일이 발생하게 되면 "예외"라는 것을 던져버립니다. 가장 일반적인 예가 null인 객체에 메소드를 호출한다든지, 5개의 공간을 가지는 배열을 만들어 6번째 값을 읽으라고 하는지 등의 경우가 있습니다. 2. try-catch는 짝이다 가장 일반적인 예로 설명한 배열 범위 밖의 값을 읽으려고 할 떄를 살펴보겠습니다. package c.exception; public class ExceptionSample { public static void main(String[] args) { ExceptionSample sample = new Exc.. 공감수 0 댓글수 0 2019. 4. 17.
  • [Java] 19. 중첩 클래스(Nested Class) 1. 클래스 안의 클래스 자바에서는 클래스 안에 클래스가 들어갈 수 있습니다. 이러한 클래스를 "Nested 클래스"라고 부릅니다. 이와 같은 클래스가 존재하는 가장 큰 이유는 코드를 간단하게 표현하기 위함입니다. Nested 클래스는 자바 기반의 UI 처리를 할 때 사용자의 입력이나, 외부의 이벤트에 대한 처리를 하는 곳에서 가장 많이 사용됩니다. Nested 클래스는 선언한 방법에 따라 "Static nested 클래스"와 "내부 클래스"로 구분됩니다. Static nested 클래스와 내부 클래스의 차이는 static으로 선언되었는지 여부입니다. 내부 클래스는 다시 두가지로 나뉩니다. 이름이 있는 내부 클래스는 "로컬(혹은 지역) 내부 클래스" 라고 하고, 이름이 없는 클래스를 "익명 내부 클래스".. 공감수 0 댓글수 0 2019. 4. 11.
  • [Java] 18. enum 클래스 1. enum 클래스라는 상수의 집합 앞장에서 배운 final로 String과 같은 문자열이나 숫자들을 나타내는 기본 자료형을 고정할 수 있습니다. 이렇게 고정된 값을 "상수", 영어로는 "constant" 라고 합니다. 그런데, 어떤 클래스가 상수만으로 만들어져 있을 경우에는 반드시 class로 선언할 필요는 없습니다. 이럴 떄 class 라고 선언하는 부분에 enum이라고 선언하면 "이 객체는 상수의 집합이다" 라는 것을 명시적으로 나타냅니다. enum 클래스는 어떻게 보면 타입이지만, 클래스의 일종입니다. 그래서 enum 클래스라고 부르면 됩니다. 한글로 번역해서 "열거형" 클래스라고 불러도 무방합니다. package c.enums; public enum OverTimeValues { THREE_H.. 공감수 0 댓글수 0 2019. 4. 9.
  • [Java] 17. 상속과 final 1. 상속과 관련된 예약어 'final' final은 클래스, 메소드, 변수에 선언할 수 있습니다. final이라는 단어의 뜻은 "마지막" 이라는 뜻입니다. 이 예약어를 클래스, 메소드, 변수가 어떻게 달라지는지 각각의 상황에 대해서 알아봅시다. 2. 클래스에 final을 선언할 때 클래스 선언시 final을 접근 제어자와 class예약어 사이에 추가할 수 있습니다. package c.impl; public final class FinalClass { } 이 FinalClass의 객체를 생성하고, 선언된 메소드를 사용하는 것은 전혀 상관 없습니다. 하지만, 클래스가 final로 선언되어 있으면 상속을 해 줄 수 없습니다. extends 키워드로 이 클래스를 상속 받고 컴파일을 해보면 상속을 받을 수 없다.. 공감수 0 댓글수 0 2019. 4. 8.
  • [Java] 16. 인터페이스(Interface)와 추상클래스(abstract 클래스) 1. 메소드 내용이 없는 interface 자바에서 .class 파일을 만들 수 있는 것에는 클래스만 있는 것이 아닙니다. interface(인터페이스)와 abstract 클래스라는 것이 있습니다. 시스템을 만들 때 설계 단계에서 프로그램을 어떻게 만들 것 인지 정리합니다. 이 때 어떤 메소드를 만들지, 어떤 변수를 만들지를 정리하는 작업도 같이 합니다. 그런데, 내용들을 문서에만 정리하면 나중에 메소드 관련 내용들이 변경되면 문서도 수정해야 하므로, 2중 3중의 일이 됩니다. 그래서, 이 설계 단계에서 인터페이스라는것을 만들어 두면 개발할 때 메소드의 이름을 어떻게 할지, 매개 변수를 어떻게 할지를 일일이 고민하지 않아도 됩니다. 게다가 개발자의 역량에 따라 메소드 이름과 매개 변수 이름이 천차만별일 .. 공감수 0 댓글수 0 2019. 4. 1.
  • [Java] 15. Object 클래스 1. 모든 자바 클래스의 부모인 java.lang.Object 클래스 상속이라는 것에 대해서 앞에서 배웠습니다. 그런데 중요한 것 하나는 바로 모든 클래스의 부모 클래스가 있다는 사실입니다. 자바에서는 기본적으로 아무런 상속을 받지 않으면 java.lang.Object 클래스를 확장합니다. 이렇게 말하면 자바는 이중 상속이 안 된다고 했는데 어떻게 된 거냐고 생각할 수 있습니다. 자바는 한 번에 이중 상속을 받을 수는 없지만, 여러 단계로 상속을 받을 수는 있습니다. 그러면 왜 모든 클래스는 Object 클래스의 상속을 받을까요? 가장 큰 이유는 Object 클래스에 있는 메소드들을 통해서 클래스의 기본적인 행동을 정의할 수 있기 때문입니다. 예를 들면 "사람"은 두발로 걷고, 생각을 한다를 들 수 있습.. 공감수 0 댓글수 0 2019. 3. 30.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.