반응형

언어(Language)/Java 95

[Java] 자바 super() vs super

super()와 super super() 메서드와 super는 공통적으로 모두 상위 클래스의 존재를 상정하며 상속 관계를 전제로 사용한다. super() 메서드는 상위 클래스의 생성자를 호출하며, spuer는 상위 클래스의 객체를 호출한다. super() this()와 유사하게 생성자 안에서만 사용 가능하며 반드시 첫 줄에 작성해야 한다. 만약 첫 줄에 super()가 없는 경우, 컴파일러가 생성자의 첫 줄에 자동으로 super()를 삽입하여 실행한다. 이때, 상위 클래스에 기본 생성자가 없으면 에러가 발생하므로 주의해야 한다. 따라서, 클래스를 만들 때 기본 생성자를 작성하는 습관을 들이는 것이 좋다. public class SuperMethodEx { public static void main(Str..

[Java] 자바 상속(Inheritance)과 포함 관계(Composite) 개념 정리 및 활용

상속(Inheritance) 자바에서 상속이란 기존의 클래스를 재활용하여 새로운 클래스를 작성하는 자바의 문법 요소이다. 상속은 상위 클래스와 하위 클래스로 나누어 상위 클래스의 멤버(필드, 메서드, 이너 클래스)를 하위 클래스와 공유하는 것을 의미한다. 부모와 자식으로 생각하면, 자식은 어머니와 아버지의 능력들을 물려받듯이 하위 클래스는 상위 클래스의 모든 멤버를 상속받게 된다. 하지만, 모든 멤버를 상속받더라도 항상 직접적으로 접근할 수 있는 것은 아니다. 상위 클래스의 필드나 메서드의 접근 제한자가 private이면, 같은 패키지일 지라도 하위 클래스는 해당 필드나 메서드에 직접적으로 접근하지 못한다. 상위 클래스의 필드나 메서드의 접근 제한자가 default이면, 상위 클래스와 하위 클래스가 다른..

[Java] 자바 내부 클래스(Inner Class) 개념 정리 및 사용법

내부 클래스 (Inner Class) 내부 클래스는 클래스 내에 선언된 클래스이다. 외부 클래스와 내부 클래스가 서로 연관되어 있을 때 사용한다. 내부 클래스를 사용하면 외부 클래스의 멤버들에 쉽게 접근할 수 있다. 내부 클래스는 외부 클래스 안에 선언하여 사용한다는 점을 제외하면 일반 클래스와 큰 차이점이 없다. 즉, 외부 클래스와 내부 클래스가 연관되어 있을 때, 사용성을 높이기 위한 수단이다. 또한, 불필요한 데이터를 감출 수 있어 캡슐화(Encapsulation)를 하는데 유용하다. 내부 클래스는 인스턴스 내부 클래스, 정적 내부 클래스, 지역 내부 클래스 세 가지로 구분할 수 있다. class OuterClass { // 필드 class InnerClass { // 인스턴스 내부 클래스 } st..

[Java] 자바의 this()와 this 개념 정리 및 차이점

this() 메서드를 호출할 때, 같은 클래스 안에 메서드들끼리 서로 호출할 수 있었던 것처럼 생성자도 상호 호출이 가능하다. 이러한 경우 사용하는 것이 this() 메서드이다. 즉, this() 메서드는 자신이 속한 클래스에서 다른 생성자를 호출하는 경우에 사용한다. 예를 들어, Animal이라는 클래스가 존재한다 가정하면, Animal 클래스의 생성자를 호출하는 것은 Animal()이 아닌 this()로 호출이 가능하다. this() 메서드를 사용하는 데에는 두 가지 조건이 있다. this() 메서드는 반드시 생성자의 내부에서만 사용할 수 있다. this() 메서드는 반드시 생성자의 첫 줄에 위치해야 한다. public class Test { public static void main(String[]..

[Java] 자바 생성자(Constructor) 개념 정리 및 예제

생성자(Constructor) 자바에서 생성자는 객체를 생성하는 역할을 하는 클래스의 구성 요소이다. 인스턴스가 호출되는 인스턴스 초기화 메서드라고 할 수 있다. 객체를 생성할 때 사용하는 new 키워드가 바로 이 생성자를 호출하는 것이다. 즉, 인스턴스 생성을 담당하는 것은 new 키워드이며, 생성자는 인스턴스 변수들을 초기화하는 데 사용되는 특수한 메서드이다. 생성자는 메서드와 비슷한 구조를 가지고 있으나 생성자의 조건이 있다. 생성자의 이름은 반드시 클래스의 이름과 같아야 한다. 생성자는 리턴 타입이 없으며, void 키워드를 사용하지 않는다. class Constructor { //생성자 Constructor(매개변수) { ... } } 생성자 또한 오버로딩이 가능하여 하나의 클래스 안에 여러 개..

[Java] 자바 메서드 오버로딩과 오버라이딩 (Overloading vs Overriding)

오버로딩 (Overloading) 메서드 오버로딩이란 하나의 클래스 안에 같은 이름의 메서드를 여러 개 정의하는 것이다. 보통 하나의 메서드에는 하나의 기능만을 구현해야 하기 때문에, 같은 이름의 메서드를 여러 개 만들어 여러 기능을 구현하기 위해 사용한다. 메서드 오버로딩은 같은 메서드 이름을 사용한다고 해서 오버로딩이 되는 것은 아니다. 메서드 오버로딩을 하기 위한 조건 같은 이름의 메서드 이름을 정의한다. 매개변수의 개수 또는 매개변수 타입을 다르게 정의한다. 이 두 가지 조건을 모두 만족해야만이 문제없이 실행이 가능하다. public class OverloadingEx { public static void main(String[] args) { OverloadingMethod test = new ..

[Java] 자바 메서드(Method) 개념 정리

메서드 (Method) 메서드는 필드와 함께 클래스의 구성 요소 중 하나이다. 메서드는 특정 작업을 수행하는 일련의 명령문들의 집합이다. 즉, 클래스의 기능에 해당하는 내용을 담당한다. 메서드는 머리에 해당하는 메서드 시그니처(method signature)와 몸통에 해당하는 메서드 바디(method body)로 구분한다. public int multiply(int a, int b) { // 메서드 시그니처 // 메서드 바디 int result = a * b; return result; } 메서드는 반환타입이 void(없음)가 아닌 경우 반드시 return 문이 존재해야 한다. 또한, 리턴 타입은 반환타입과 일치하거나 자동 형변환이 가능한 형태여야 한다. class MethodType { // void인..

[Java] 자바 필드(Field) 개념 정리 및 예제

필드 (Field) 필드는 클래스에 포함된 변수를 의미한다. 즉, 객체의 속성을 정의하는 공간이다. 자바에서 변수는 크게 클래스 변수(cv: class variable), 인스턴스 변수(iv, instance variable), 지역 변수(lv, local variable)가 있다. 필드에서 다루는 변수는 클래스 변수(cv)와 인스턴스 변수(iv)이다. 이 둘은 static 키워드를 통해 구분할 수 있다. 자바의 변수 종류 클래스 변수 : 필드 내에서 static 키워드와 함께 선언된 변수, static 변수 또는 공유 변수라고도 함 인스턴스 변수 : 필드 내에서 선언된 변수 (static 키워드 없음) 지역 변수 : 메서드 내에 포함된 모든 변수 class Variable { static int cla..

[Java] 자바 클래스와 객체, 인스턴스 개념 정리 및 활용

클래스 (Class) 클래스란 객체를 정의한 설계도 또는 틀이라 정의할 수 있다. 즉, 클래스는 객체를 생성하는 데 사용된다. 반대로 객체는 클래스에 의해 정의되고 설계된 내용을 기반으로 생성된다. 또한, 클래스로부터 객체를 만드는 과정을 인스턴스화(Instanctiate)라 한다. 클래스와 객체의 관계는 제품의 설계도와 제품과의 관계와 유사하다. 제품 설계도 없이는 제품을 만들 수 없고, 제품 또한 제품 설계도 없이 만들 수 없기 때문이다. 객체 (Object) 사람과 동물, 물품, 어떤 논리나 사상, 개념, 철학 등과 같이 눈으로 볼 수 있는 것부터 볼 수 없는 것까지 객체의 범주에 포함될 수 있다. 즉, 객체는 우리가 보고 느끼며 인지할 수 있는 모든 것을 의미한다. 객체는 클래스에 의해 정의되고 ..

[Java] 자바 배열(Array) 개념 정리 및 사용법

어떤 값을 저장하기 위해서는 변수를 사용한다. 하지만, 변수는 하나의 값만 저장할 수 있는 단점이 있다. 예를 들어, 날짜 데이터, 학급별 학생 수, 회원들의 아이디 등 데이터들을 변수로 표현하려면, 선언해야 하는 변수는 무수히 많아진다. 이는 결국 사용자가 비슷한 데이터들을 다른 이름의 변수로 공장에서 찍어 내듯이 선언해야 할 것이다. 배열이란? (Array) 배열은 변수의 단점을 해결할 수 있는 수단으로, 동일한 타입의 값들을 하나의 묶음으로 저장한 자료 구조이다. 즉, 여러 값들이 같은 의미를 지니면서 서로 연관성이 있을 때, 이들을 하나의 덩어리로 묶을 수 있다. 이렇게 묶인 데이터들의 집합을 배열이라 한다. 배열의 차원 (Dimension) 배열을 사용할 때, 1차원 배열부터 2차원 배열, …,..

반응형