반응형

언어(Language) 109

[Java] 자바 다형성(Polymorphism) 개념 정리 및 활용

다형성 (Polymorphism) 다형성이란 여러 개를 의미하는 poly와 형태 또는 실체를 의미하는 morphism의 결합어로, 하나의 객체가 여러 가지 형태를 가질 수 있는 것을 의미한다. 자바에서 다형성은 한 타입의 참조 변수를 통해 여러 타입의 객체를 참조할 수 있도록 하는 것이다. 즉, 상위 클래스 타입의 참조 변수를 통해서 하위 클래스의 객체를 참조할 수 있도록 허용하여 상위 클래스가 동일한 메시지로 하위 클래스들이 서로 다른 동작을 할 수 있도록 한다. 다형성을 활용하면, 부모 클래스가 자식 클래스의 동작 방식을 알 수 없어도 오버라이딩을 통해 자식 클래스에 접근할 수 있다. 다형성의 장점 유지보수 : 여러 객체를 하나의 타입으로 관리할 수 있어 유지보수가 용이하다. 재사용성 : 객체의 재사..

[Java] 자바 Getter와 Setter 개념 정리 및 활용

Intro 캡슐화를 통해 정보 은닉을 했다고 가정한다면, private 접근 제어자가 포함되어 있는 데이터의 변경이 필요한 경우, getter와 setter 메서드를 사용하여 데이터의 값을 추가하거나 수정을 할 수 있다. getter() 메서드 getter 메서드는 설정한 변수 값을 읽어오는 데 사용한다. 경우에 따라 객체 외부에서 필드 값을 사용하기에 부적절한 경우가 발생할 수 있는데, 이러한 경우에는 값을 가공한 이후에 외부로 전달하는 역할을 한다. setter() 메서드 setter 메서드는 외부에서 메서드에 접근하여 조건에 맞을 경우 데이터 값을 변경할 수 있도록 한다. 먼저, setter 메서드를 사용하여 데이터의 값을 저장하고, getter 메서드를 통해 해당 데이터 값을 불러와 변수에 담아 ..

[Java] 접근 제어자(Access modifier) 개념 정리 및 활용

제어자 (Modifier) 자바에서 제어자는 클래스, 필드, 메서드, 생성자 등에 외부로부터의 접근을 제어하는 것을 의미한다. 자바의 제어자는 접근 제어자와 기타 제어자로 구분할 수 있다. 접근 제어자 : public, protected, default, private 기타 제어자 : static, final, abstract, native, transient, synchronized 등 접근 제어자(Access Modifier) 접근 제어자는 클래스 외부로의 불필요한 데이터 노출을 방지하고, 외부로부터 데이터가 임의로 변경되지 않도록 막을 수 있다. 즉, 정보 은닉(data hiding)과 연관이 깊다. 접근 제어자는 public, protected, default, private로 구성되어 각각의 역..

[Java] 자바 패키지(Package)와 임포트(Import) 개념 정리 및 활용

패키지 (Package) 자바에서 패키지란 특정한 목적을 공유하는 클래스와 인터페이스의 묶음을 의미한다. 즉, 서로 관련 있는 클래스들을 묶어 효과적으로 관리하기 위해 사용한다. 자바의 패키지는 하나의 디렉토리(directory)이고, 패키지에 속한 클래스나 인터페이스 파일은 모두 해당 패키지에 속해있다. 패키지는 계층 구조를 가지며, 계층 간의 구분은 점(.)으로 표현된다. 패키지가 있는 경우 소스 코드의 첫 번째 줄에 반드시 package 패키지명이 표시되어야 하고, 패키지 선언이 없으면, 이름 없는 패키지에 속하게 된다. package 패키지.서브패키지.서브패키지의서브패키지; public class PackageEx { ... } 자바에 기본적으로 포함되어 있는 대표적인 패키지로는 java.lang..

[Java] 자바 캡슐화(Encapsulation) 개념 정리

캡슐화 (Encapsulation) 캡슐화란 특정 객체 안에서 관련된 속성과 행위(필드와 메서드)를 하나의 캡슐 형태로 묶어 데이터를 외부로부터 보호하기 위해 정보 은닉(Data Hiding)을 하는 것이다. 즉, 외부에서 내부로 직접적인 접근을 막고, 객체가 제공하는 필드와 메서드를 통해서만 접근이 가능하도록 한다. 캡슐화를 하면 데이터 보호와 함께 내부적으로만 사용되는 데이터를 외부로 노출하는 것을 방지할 수 있으며, 데이터가 변경되더라도 다른 객체에 영향을 주지 않아 독립성을 확보할 수 있다. 또한, 유지보수와 코드 확장 시 오류의 범위도 최소화할 수 있는 장점이 있다. 캡슐화를 수행하기 위해 접근제어자와 getter(), Setter() 메서드에 대해 학습할 필요가 있다. 접근 제어자(Access..

[Java] 자바 Object 클래스 개념 정리

오브젝트 클래스 (Object Class) 자바의 Object 클래스는 클래스 상속계층도에서 최상위 계층에 위치한 상위 클래스이다. 따라서, 자바의 모든 클래스는 Obejct 클래스로부터 확장된다. 자바 컴파일러는 컴파일링 과정에서 다른 클래스로부터 아무런 상속을 받지 않는 클래스는 자동으로 extends Object를 추가하여 Object 클래스를 상속받도록 한다. class Parents { // 컴파일러가 extends Object 자동 추가 } class Child extends Parents { } 따라서 생성한 모든 클래스들은 Object 클래스의 멤버들을 자동으로 상속받아 사용할 수 있다. Object 클래스의 메서드 toString() 메서드 toString() 메서드는 객체의 정보를 문자..

[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[]..

반응형