본문 바로가기

Java

(25)
(상속) 부모 클래스 접근 훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com 상속에서 부모 클래스 접근하기 아래와 같은 구조에서 접근입니다. 소스코드입니다. class A { int x; } class B extends A{ int x; } public class C extends B{ int x; } 위와 같이 필드의 이름이 겹치는 구조에서는 접근이 어떻게 될까요? 물론 위처럼 필드의 이름이 겹치도록 설계하는 것은 좋은 구조는 아닙니다. 메서드는 '메서드 오버 라이딩'이라고 하여 다형성의 기반이 되는 것이 존재하지만 필드의 경우에는 겹치도록 설계하는 것이 좋지 않습니다. 그럼에도 이런 경우 어떻게 접근되는지 알아보겠습니다. 우선 필드 접근에 대해서 이해하려면, 필드와 메서드는 접근 방식이 다..
자바 상속 기본 훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com 상속 상속과 다형성은 객체지향의 '꽃'이라고 해도 과언이 아닙니다. 오늘은 자바의 상속에 대해서 알아보겠습니다. 상속이란, 상위 클래스의 필드, 메서드를 하위 클래스가 물려받는 것을 의미합니다. 그래서 상속을 통해 '올바른 상속관계'에 있는 클래스들을 정의한다면 하위 클래스에서 동일한 필드나 메서드를 재정의할 필요가 없기 때문에 코드가 간결해지고 유지보수가 쉽습니다. 여기서 말하는 올바른 관계에는 IS-A 관계가 대표적입니다. IS-A는 말 그대로 '일종의 ~인 관계이다' 라고 정의합니다. 간단한 예로 학생과 사람이 있다면 학생은 일종의 사람입니다. 사람이 갖는 기본적인 특성인 머리, 팔다리, 이름 등을 그대로 갖고 ..
Java static / non-static 훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com static / non-static static은 언제 사용할까요? 1. 전역 변수, 전역 함수를 만들 때 사용 2. 클래스에서 관리하는 변수, 함수를 만들 때 사용 우선 위와 같이 static이 사용되는 상황에 대해서 인지하고, Java의 메모리 구조를 이해하면 static을 완벽하게 이해할 수 있습니다. 아래 코드를 보겠습니다. public class StaticExam { public static int sint; public static void setSint(int input) { sint = input; } public int mint; public void setMint(int input) { mint =..
Java의 패키지와 접근 지정자 훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com 자바의 패키지 자바에서 패키지란, 관련이 있는 .class파일 (컴파일된 것)을 저장하는 폴더입니다. 간단히 말해서, 자바에서는 폴더를 패키지라고 말합니다. 한 패키지에는 협업을 할 가능성이 높은 패키지들이 모여 있습니다. (그렇게 구성을 하게 됩니다.) 자바 응용 프로그램은 한 개 이상의 패키지로 구성되어 있으며, 프로젝트에서 기반이 되는 폴더인 src 이하 폴더로 구성되게 됩니다. package exam; public class PackageExam { } 위 예시처럼 소스코드 최 상단에 어떤 package에 속해있는지 표기하게 됩니다. 자바에서는 패키지가 다른데 이름이 같은 클래스가 존재할 수 있습니다. 그래서 ..
생성자 훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com Java의 생성자 생성자 생성자는 객체 지향 프로그래밍에서 객체의 초기화를 담당하는 서브루틴을 가리킨다. 생성자는 객체가 처음 생성될 때 호출되어 멤버 변수를 초기화하고, 필요에 따라 자원을 할당하기도 한다. 객체의 생성 시에 호출되기 때문에 생성자라는 이름이 붙었다. -위키백과- 위키백과에 정리가 너무 잘 되어있습니다. 생성자의 목적은, 객체의 필드를 초기화하는 데 있습니다. 그렇다면 초기화를 해주는 init함수라던지, 그런 것들로 초기화를 해도 되는데 왜 생성자를 사용할까요? 생성자를 사용하면, 생성과 동시에 초기화를 강제할 수 있습니다. 그러나 init함수를 사용하면, 강제할 수 없습니다. 그렇다면 초기화를 깜빡..
클래스와 객체(미완성) 훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com 객체 지향 언어 vs. 절차 지향 언어 객체 지향 언어 객체 지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. -위키백과- 자바는 '객체 지향 언어'입니다. 객체 지향 언어는 프로그램을 객체들 간 상호작용으로 구성해나가는 것을 의미합니다. 이런 객체지향적 언어의 장점은 프로그램 가독성(현실 세계와 같은 직관적 모델링)과 생산성(재사용성)에 있다고 합니다. 자바에서는 객체를 클래스라는 것으로 정의..
예외 처리 훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com 종류 자바에서 오류는 컴파일 시에 발생하는 컴파일 에러 (프로그램이 실행되지 않음) 실행 도중에 문제가 생겼을 때 발생하는 런타임 에러(프로그램이 종료됨) 이 있습니다. 원래 에러가 발생하면 프로세스가 종료됩니다. 그러나 프로그램이 반드시 종료되어야만 하는 경우가 아닐 때 (심각한 에러가 아닐 때)는 프로그래머가 직접 이런 오류를 handling 하여 원하는 처리를 할 수 있습니다. 런타임 에러 중 프로그래머가 컨트롤할 수 있는 것들을 예외라고 하고, 그렇지 않은 것들을 런타임 에러라고 합니다. 대표적인 런타임 에러로는 OutOfMemoryError가 있습니다. (메모리가 부족하면 어떤 방법으로든 해결이 안 되기 때문..
자바 배열과 메모리 훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com 배열이 메모리에 생성되는 방식 1차원 배열 int [] intArr = {1,2,3,4} 2차원 배열 int [][]intArr = {{1, 2}, {3, 4}}; 이 외 3차원... 으로 나아가는 배열도 마찬가지입니다. 배열과 for문 자바에서는 배열이 단순 연속된 메모리의 형태가 아니라 객체 형태로 저장이 되기 때문에, length라는 메서드를 제공합니다. (배열에 원소가 몇 개 있는지 알 수 있음) 그래서 제공하는 메서드를 사용하여 (index out of bound 등을 예방할 수 있음) for 반복문을 사용하는 경우가 많습니다. //일차원 배열 int[] intArr = {1,2,3,4}; for (int i..