Language

내부 클래스(Inner Class)란? 클래스 내에 선언된 클래스 내부 클래스는 두 클래스가 서로 밀접한 관계이고, 주로 한 클래스 내에서만 사용할 것이라 예상되는 클래스가 필요할 때 사용한다. 한 클래스를 다른 클래스의 내부에 선언함으로써 외부에 불필요하게 노출되는 것을 방지(캡슐화)하고, 내부 클래스가 외부 클래스의 멤버에 쉽게 접근할 수 있도록 할 수 있다. 내부 클래스의 종류 마치 변수가 선언위치에 따라 구분되듯이 각 내부 클래스도 선언된 위치에 따라 그 종류가 달라지며, 변수와 동일한 유효범위(scope)와 접근성(accessibility)을 가진다. 종류 특징 인스턴스 클래스 (Instance class) 외부 클래스의 멤버변수 선언 위치에 선언하며, 외부 클래스의 인스턴스 멤버처럼 다뤄진다...
인터페이스(interface)란? 인터페이스는 일종의 추상 클래스로, 추상 클래스와 마찬가지로 추상 메서드를 가지지만 보다 추상화의 정도가 높기 때문에 일반적인 메서드를 멤버로 가질 수 없다. 뿐만 아니라 일반적인 멤버변수도 가질 수 없고 오직 상수만 멤버로 가질 수 있다. 따라서 추상 클래스가 일부만 완성된 '미완성 설계도'라면, 인터페이스는 밑그림만 그려져 있는 '기본 설계도'라고 할 수 있다. 또한 추상 클래스와 마찬가지로 불완전하기 때문에 그 자체로는 사용할 수 없고(인스턴스 생성 불가), 다른 클래스를 작성하는 데 도움을 주는 가이드 역할을 한다. 인터페이스 작성법 인터페이스를 작성하는 방법은 기본적으로 클래스와 동일해서 접근 제어자로 'public'과 '(default)'를 사용할 수 있고, ..
추상 클래스(abstract class)란? 클래스가 '객체의 설계도'라면, 추상 클래스 '미완성 설계도'라고 할 수 있다. 미완성된 클래스라는 것은 멤버로 미완성된 메서드(추상 메서드)를 가지고 있다는 의미이며, 그 외에는 일반적인 클래스와 차이가 없다. 추상 클래스는 추상 메서드를 가지고 있기 때문에 인스턴스를 직접 생성할 수 없으며, 자손 클래스의 상속에 의해서만 온전한 클래스로 완성될 수 있다. 하지만 추상 클래스는 조상 클래스로서 중요한 의미를 가지는데, 여러 개의 클래스가 대부분 같은 속성과 기능을 공유하지만 일부 기능에 차이가 있을 때 유용하게 사용할 수 있다. 예를 들어 자동차의 옵션에 따라 세부적인 기능은 다를 수 있지만, 기본적인 스펙이나 기능은 동일하기 때문에 유사한 설계도를 가지게 ..
다형성(polymorphism)이란? 다형성은 객체지향의 4대 핵심 개념 중 하나로, 이름 그대로 여러 가지 형태를 가질 수 있다는 의미이다. 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있게 하였는데, 다시 말해 조상 클래스 타입의 참조변수로 자손 클래스의 인스턴스를 참조할 수 있도록 하여 다형성을 구현하였다. 다형성을 이해하기 위해선 상속에 대한 개념이 반드시 필요하다. 만약 상속에 대해 잘 모른다면 아래의 포스트를 참고하면 된다. 상속 상속(inheritance)이란? 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것 상속이란 객체지향의 4대 핵심 개념 중 하나로, 상속을 통해 클래스를 작성하면 보다 적은 양의 코드로 새로운 클 doshiwa-dev.tistory.com cl..
제어자(modifier)란? 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여하는 키워드 제어자는 크게 접근 제어자와 그 외의 제어자로 나눌 수 있으며, 종류는 아래와 같다. 접근 제어자: public, protected, default, private 그 외 제어자: static, final, abstract, native, transient, synchronized, volatile, strictfp 하나의 대상에 대해서 여러 제어자를 조합하여 사용할 수 있지만, 접근 제어자는 4개 중 한 개만 선택해서 사용해야 한다. static static은 '클래스의' 또는 '공통적인'이라는 의미를 가지고 있다. 때문에 모든 클래스가 공통적인 속성을 공유할 때는 static 변수를, 공통..
오버라이딩(Overriding)이란? 조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것 일반적으로 새로운 클래스를 생성할 때 상속받은 메서드를 그대로 사용하기 보다는, 새로운 클래스 자신의 상황에 맞게 메서드를 변경해야 하는 경우가 많다. 이럴 때 사용하는 것이 바로 '오버라이딩'이다. class Point { int x; int y; String getLocation() { return "x: " + x + ", y: " + y; } } class Point3D extends Point { int z; String getLocation() { return "x: " + x + ", y: " + y + ", z: " + z; } } 위의 예시처럼 Point3D 클래스는 Point 클래스의 getLo..
도시와
'Language' 카테고리의 글 목록