클래스가 여러 클래스와 관계를 맺는 경우에는 독립적으로 선언하는 것이 좋으나, 특정 클래스만 관계를 맺을 경우에는 중첩 클래스로 선언하는 것이 유지보수에 도움이 되는 경우가 많습니다. 중첩 클래스란? 중첩 클래스(nested class)란 클래스 내부에 선언한 클래스를 말합니다. 중첩 클래스를 사용하면 클래스의 멤버를 쉽게 사용할 수 있습니다. 그리고 외부에는 중첩 관계 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있습니다. 중첩 클래스의 종류 멤버 클래스 인스턴스 멤버 클래스 class A { class B { ... } } A 객체를 생성해야만 B 객체를 생성할 수 있습니다. 정적 멤버 클래스 class A { static class B { ... } } A 객체를 생성하지 않아도 B 객체를 생성할 ..
JAVA 공부
다중 인터페이스 구현 구현 객체는 여러 개의 인터페이스를 implements 할 수 있습니다. 구현 객체가 인터페이스 A와 인터페이스 B를 구현하고 있다면, 각각의 인터페이스를 통해 구현 객체를 사용할 수 있습니다. public class 구현클래스명 implements 인터페이스A, 인터페이스B { // 모든 추상 메소드 재정의 } 인터페이스A 변수 = new 구현클래스명(...); 인터페이스B 변수 = new 구현클래스명(...); 이 때, 모든 추상 메소드는 구현 클래스에서 정의를 해야합니다. 인터페이스 상속 인터페이스도 다른 인터페이스를 상속할 수 있으며, 클래스와 달리 다중 상속을 허용합니다. public interface 자식인터페이스 extends 부모인터페이스1, 부모인터페이스2 { .....
인터페이스란? 인터페이스(Interface)는 객체 지향 프로그래밍에서 사용되는 중요한 개념으로, 클래스와 마찬가지로 데이터와 메소드를 정의하지만, 구현된 내용이 없는 추상적인 틀을 제공합니다. 인터페이스는 다른 클래스들이 구현해야 할 메소드들의 목록을 정의하며, 클래스 간의 계약(Contract)을 정의하는 데 사용됩니다. 즉, 인터페이스는 사전적인 의미로 두 장치를 연결하는 접속기를 말합니다. 인터페이스는 무엇이고 인터페이스르 왜 사용하는지 쉽게 이해하기 위해 이것이 자바다 책에서의 예시를 가져왔습니다. 객체 A가 인터페이스의 메소드를 호출하면, 인터페이스는 객체 B의 메소드를 호출하고 그 결과를 받아 객체 A로 전달해줍니다. 이렇게 중간에 인터페이스를 거치는 이유는 객체가 교체될때를 대비해서 입니다..
추상 클래스 추상 클래스(Abstract Class)는 객체 지향 프로그래밍에서 사용되는 중요한 개념으로, 완전히 구현되지 않은 메소드를 가질 수 있는 클래스입니다. 추상 클래스는 직접적으로 객체를 생성할 수는 없지만, 이를 상속받은 하위 클래스에서 추상 메소드를 구현하여 사용할 수 있습니다. 추상 클래스는 클래스 간의 공통된 특성을 추출하여 정의하는 데 사용됩니다. 즉, 다시 말하면 객체를 생성할 수 있는 클래스를 실체 클래스라고 한다면, 이 클래스들의 공통적인 필드나 메소드를 추출해서 선언한 클래스를 추상 클래스라고 합니다!!! abstract class Shape { abstract double calculateArea(); // 추상 메소드, 하위 클래스에서 구현 void displayArea()..
타입 변환 자바에서 타입 변환은 굉장히 편리한 도구 입니다. 기본 타입일 경우 Integer.parseInt와 같은 편리한 메소드로 모든 타입으로 변경 시킬 수 있습니다. 클래스 사이에서도 타입 변환이 생깁니다. 바로 자식타입객체가 부모타입의 변수로 자동으로 타입 변환이 일어나는 것입니다. 자식은 부모의 특징과 기능을 상속받기 때문에 부모와 동일하게 취급될 수 있습니다. 자동 타입 변환 class A { } class B extends A { } B b = new B(); A a = b; a == b //true 부모 타입으로 자동 타입 변환된 이후에는 부모 클래스에 선언된 필드와 메소드만 접근 가능합니다. public class Parent { void method1() { ... } void meth..
상속이란? 객체 지향 프로그램에서 상속은 부모 클래스의 필드와 메소드를 자식 클래스에게 물려주는 것입니다. 이렇게 부모 클래스의 필드와 메소드를 자식 클래스가 상속받아 쓰는 것입니다. 이때 자식 클래스에는 또 다른 필드와 메소드가 들어갈 수 있습니다. 상속의 장점 코드 재사용 : 상속을 통해 부모 클래스의 속성과 메서드를 자식 클래스로 물려받을 수 있습니다. 이로 인해 부모 클래스의 코드를 중복해서 작성하지 않고도 자식 클래스에서 해당 코드를 활용할 수 있습니다. 확장성 : 상속을 통해 기존 클래스를 확장하여 새로운 클래스를 정의할 수 있습니다. 새로운 클래스에서는 부모 클래스의 기능을 유지하면서 추가적인 속성과 메서드를 정의할 수 있습니다. 다형성 : 상속은 다형성을 가능하게 합니다. 부모 클래스 타입..
데이터 타입 분류 데이터 타입에는 기본 타입과 참조 타입으로 분류된다. 기본 타입(primitive type)에는 정수 타입(byte, char, short, int, long), 실수 타입(float, double), 논리 타입(boolean)이 있다. 내가 오늘 공부해 볼 것은 참조 타입이다. 참조 타입은 객체 지향적 프로그래밍의 핵심이다. 참조 타입은 객체의 번지를 참조하는 타입으로 배열, 열거, 클래스, 인터페이스 타입이 존재한다. 기본 타입 변수 VS 참조 타입 변수 기본 타입 변수는 값이 저장됨. 참조 타입으로 선언된 변수는 객체가 생성된 메모리 번지를 저장한다. 참조 타입 변수는 stack 영역에 존재하고 heap 영역에 객체 주소에 내용을 가져옵니다. 메모리 사용 영역 저번에 JVM을 공부..
JAVA 8, 11, 17 코딩테스트를 보면 java 8 이상이라는 말이 많다. 프로젝트를 할 때도 java8, 11, 17을 사용하는 경우가 많습니다. 자바에는 여러 버전이 있지만 그중 8, 11, 17을 제일 많이 사용합니다. 왜냐하면 이 3개의 버전이 LTS(Long Term Support)이기 때문입니다. LTS란 이 버즌은 출시 이후 8년간 보안 업데이트와 버그 수정을 지원해 준다는 뜻입니다. java 8 : 2030년 12월 java11 : 2026년 9월 java17 : 2029년 9월 이레서 java8 대신 사용하는 것이 java11이 아닌 java17입니다. 자바 8 (Java 8) 32bit를 지원하는 마지막 공식 Java 버전 오라클이 자바 인수 후 출시한 첫 번째 LTS 버전 Ora..