[java] 클래스와 인스턴스
클래스와 인스턴스 기본적인 개념이지만, 간단하고 쉽게 이해할 수 있도록 정리하려 한다. 클래스 어떤 문제를 해결하기 위한 데이터를 만들기 위해 추상화를 거쳐 집단에 속하는 속성과 행위를 변수와 메소드로 정의한 것이다. 인스턴스 클래스에서 정의한 것을 토대로 실제 메모리 상에 할당된 것으로 실제 프로그램에서 사용되는 데이터를 말한...
클래스와 인스턴스 기본적인 개념이지만, 간단하고 쉽게 이해할 수 있도록 정리하려 한다. 클래스 어떤 문제를 해결하기 위한 데이터를 만들기 위해 추상화를 거쳐 집단에 속하는 속성과 행위를 변수와 메소드로 정의한 것이다. 인스턴스 클래스에서 정의한 것을 토대로 실제 메모리 상에 할당된 것으로 실제 프로그램에서 사용되는 데이터를 말한...
추상 클래스와 인터페이스의 차이점 인터페이스 클래스가 아니며, 클래스와 관련이 없다. 추상 메소드와 상수만을 멤버로 가진다. 한 개의 클래스가 여러 인터페이스를 구현할 수 있다. (다중 구현 가능.) Java 8부터 default 메소드가 추가되었다. defa...
추상 클래스란? 추상 클래스는 미완성된 클래스이다. 미완성된 클래스는 미완성된 메소드인 추상 메소드를 포함하고 있다. 추상 클래스는 혼자로는 클래스의 역할을 다 못하지만, 새로운 클래스를 작성하는 데 있어 그 바탕이 되는 부모 클래스로서의 중요한 의미를 갖는다. 왜냐하면 클래스를 작성함에 있어서 어느정도 작성된 상태에서 시작할 ...
직렬화 자바에서 직렬화라는 기술이 있다. 이는 안드로이드에서도 종종 사용되는 기술인데, 이에 대해 알아보려 한다. 메모리 내에 존재하는 정보를 보다 쉽게 전송 및 전달하기 위해서 byte 코드 형태로 나열하는 것을 말한다. 이는 간단한 설명이다. 좀 더 자세히 알아보자. 직렬화가 무엇인가? 자바 직렬화란 자바 시스템 내부에서 사용되...
접근 제어 지시자 자바에서 기본적인 부분이지만, 실제로 사용할 때 의미를 파악하지 않고 남발하는 경우가 많아 정리하려 한다. public : public으로 선언된 멤버는 어떤 클래스에서라도 접근이 가능하다. public 메소드는 private 멤버와 프로그램 사이의 인터페이스 역할을 수행하기도 한다. protected : protecte...
인터페이스란? 인터페이스는 인터페이스를 구현하는 모든 클래스에 대해 특정한 메소드가 반드시 존재하도록 강제한다. 인터페이스의 목적은 구현 객체가 같은 동작을 한다는 것을 보장하는 것이다. 일종의 추상 클래스다. 하지만 추상 클래스보다 추상화 정도가 높아서 추상 메소드 이외의 일반 메소드나 멤버 변수를 구성원으로 가질 수 없다. 오직 추상...
오버라이딩 vs 오버로딩 오버라이딩과 오버로딩은 자주 나오면서도 중요한 개념이다. 하지만, 그만큼 잘 까먹기 때문에 정리하고 넘어가려 한다. 오버라이딩 : 상위 클래스가 가지고 있는 메소드를 하위 클래스에서 재정의해서 사용하는 것을 의미한다. 상속 시, 상위 클래스의 private 멤버를 제외한 모든 멤버를 상속받는다. ...
전역, 지역, 클래스 변수를 자바의 메모리 구조와 관련해서 생각해보기 메소드 영역 클래스에 대한 정보와 함께 클래스 변수(static variable)가 저장되는 영역. (즉, Static 변수가 저장되는 영역) JVM은 자바 프로그램에서 특정 클래스가 사용되면 해당 클래스의 클래스 파일(*.class)을 읽어들여, 클래스에 대...
기본형과 참조형의 차이점은? 자바에서는 Primitive Type과 Reference Type이 있다. 이는 기본형과 참조형이라고 하며, 서로 조금은 다른 특징을 가지고 있다. 기본형(Primitive Type) 변수에 값 자체를 저장하며, stack 영역에 생성된다. 사용하기 전에 반드시 선언되어야 하며, 초기...
객체지향 프로그래밍 객체 지향 프로그래밍은 OOP(Object Oriented Programming)이라고도 한다. 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. [장점] 코드의 재사용성이 높다. 누군가가 만든 클...