전체 카테고리361 [Java] 19. 중첩 클래스(Nested Class) 1. 클래스 안의 클래스 자바에서는 클래스 안에 클래스가 들어갈 수 있습니다. 이러한 클래스를 "Nested 클래스"라고 부릅니다. 이와 같은 클래스가 존재하는 가장 큰 이유는 코드를 간단하게 표현하기 위함입니다. Nested 클래스는 자바 기반의 UI 처리를 할 때 사용자의 입력이나, 외부의 이벤트에 대한 처리를 하는 곳에서 가장 많이 사용됩니다. Nested 클래스는 선언한 방법에 따라 "Static nested 클래스"와 "내부 클래스"로 구분됩니다. Static nested 클래스와 내부 클래스의 차이는 static으로 선언되었는지 여부입니다. 내부 클래스는 다시 두가지로 나뉩니다. 이름이 있는 내부 클래스는 "로컬(혹은 지역) 내부 클래스" 라고 하고, 이름이 없는 클래스를 "익명 내부 클래스".. 2019. 4. 11. [Java] 18. enum 클래스 1. enum 클래스라는 상수의 집합 앞장에서 배운 final로 String과 같은 문자열이나 숫자들을 나타내는 기본 자료형을 고정할 수 있습니다. 이렇게 고정된 값을 "상수", 영어로는 "constant" 라고 합니다. 그런데, 어떤 클래스가 상수만으로 만들어져 있을 경우에는 반드시 class로 선언할 필요는 없습니다. 이럴 떄 class 라고 선언하는 부분에 enum이라고 선언하면 "이 객체는 상수의 집합이다" 라는 것을 명시적으로 나타냅니다. enum 클래스는 어떻게 보면 타입이지만, 클래스의 일종입니다. 그래서 enum 클래스라고 부르면 됩니다. 한글로 번역해서 "열거형" 클래스라고 불러도 무방합니다. package c.enums; public enum OverTimeValues { THREE_H.. 2019. 4. 9. [Java] 17. 상속과 final 1. 상속과 관련된 예약어 'final' final은 클래스, 메소드, 변수에 선언할 수 있습니다. final이라는 단어의 뜻은 "마지막" 이라는 뜻입니다. 이 예약어를 클래스, 메소드, 변수가 어떻게 달라지는지 각각의 상황에 대해서 알아봅시다. 2. 클래스에 final을 선언할 때 클래스 선언시 final을 접근 제어자와 class예약어 사이에 추가할 수 있습니다. package c.impl; public final class FinalClass { } 이 FinalClass의 객체를 생성하고, 선언된 메소드를 사용하는 것은 전혀 상관 없습니다. 하지만, 클래스가 final로 선언되어 있으면 상속을 해 줄 수 없습니다. extends 키워드로 이 클래스를 상속 받고 컴파일을 해보면 상속을 받을 수 없다.. 2019. 4. 8. [Java] 16. 인터페이스(Interface)와 추상클래스(abstract 클래스) 1. 메소드 내용이 없는 interface 자바에서 .class 파일을 만들 수 있는 것에는 클래스만 있는 것이 아닙니다. interface(인터페이스)와 abstract 클래스라는 것이 있습니다. 시스템을 만들 때 설계 단계에서 프로그램을 어떻게 만들 것 인지 정리합니다. 이 때 어떤 메소드를 만들지, 어떤 변수를 만들지를 정리하는 작업도 같이 합니다. 그런데, 내용들을 문서에만 정리하면 나중에 메소드 관련 내용들이 변경되면 문서도 수정해야 하므로, 2중 3중의 일이 됩니다. 그래서, 이 설계 단계에서 인터페이스라는것을 만들어 두면 개발할 때 메소드의 이름을 어떻게 할지, 매개 변수를 어떻게 할지를 일일이 고민하지 않아도 됩니다. 게다가 개발자의 역량에 따라 메소드 이름과 매개 변수 이름이 천차만별일 .. 2019. 4. 1. [Java] 15. Object 클래스 1. 모든 자바 클래스의 부모인 java.lang.Object 클래스 상속이라는 것에 대해서 앞에서 배웠습니다. 그런데 중요한 것 하나는 바로 모든 클래스의 부모 클래스가 있다는 사실입니다. 자바에서는 기본적으로 아무런 상속을 받지 않으면 java.lang.Object 클래스를 확장합니다. 이렇게 말하면 자바는 이중 상속이 안 된다고 했는데 어떻게 된 거냐고 생각할 수 있습니다. 자바는 한 번에 이중 상속을 받을 수는 없지만, 여러 단계로 상속을 받을 수는 있습니다. 그러면 왜 모든 클래스는 Object 클래스의 상속을 받을까요? 가장 큰 이유는 Object 클래스에 있는 메소드들을 통해서 클래스의 기본적인 행동을 정의할 수 있기 때문입니다. 예를 들면 "사람"은 두발로 걷고, 생각을 한다를 들 수 있습.. 2019. 3. 30. [Java] 14. 다형성(Polymorphism) Polymorphism 우리나라 말로 다형성이라고 합니다. 다형성이란 "형태가 다양하다"라는 말입니다. Overriding과 형 변환을 이해했으면 다형성은 쉽습니다. 다음과 같은 ChildOther라는 클래스를 만들어 봅시다. 1 2 3 4 5 6 7 8 9 package c.inheritance; public class ChildOther extends Parent{ public ChildOther() { } public void printName() { System.out.println("printName() - ChildOther"); } } Parent클래스의 자식 클래스가 2개가 된 것입니다. 자식이 더 있을 수 있냐고 궁금해 할 수 있는데, 자바의 자식 클래스는 몇개가 되도 상관없습니다. 1 .. 2019. 3. 26. 이전 1 ··· 55 56 57 58 59 60 61 다음