자바

· IT/Java
익명(anonymous) 객체 이름이 없는 객체를 말하며, 프로그램에서 일시적으로 한 번만 사용되고 버려져 재사용이 되지 않는 객체이다. 하나의 코드로 여러 인스턴스를 만들 필요 없을 때 사용한다. 클래스의 선언과 객체 생성을 동시에 한다. 명시적으로 클래스를 선언하지 않으나 단독으로 생성할 수 없으며, 클래스를 상속하거나 인터페이스를 구현해야 생성 가능하다. 익명 객체는 필드값, 로컬 변수값, 매개변수값을 주로 사용된다. UI 이벤트 처리 객체나 스레드 객체를 간편하게 생성할 목적으로 많이 활용된다. 내부 클래스의 일종으로 외부의 지역 변수 이용할 때 똑같이 내부 클래스의 제약을 받는다. 내부 클래스에서 가져올 수 있는 변수는 final 상수만 사용 가능하다. 클래스를 상속해서 만들 경우 익명 자식 객..
· IT/Java
중첩 인터페이스 class A { /* 중첩 인터페이스 */ [public | private] [static] interface B { // 상수 필드 // 추상 메소드 // 디폴트 메소드 // 정적 메소드 } } 중첩 인터페이스는 클래스의 멤버로 선언된 인터페이스를 말한다. UI 프로그래밍에서 이벤트 처리 목적으로 많이 활용된다. 중첩 인터페이스는 기본적으로 정적(static)이라 키워드를 명시할 필요가 없다. 인터페이스 내부에 선언된 중첩 인터페이는 public 한정자만 사용 가능하여 암시적으로 public이다. 도트(.) 연산자를 사용하여 중첩된 인터페이스에 접근한다. 중첩된 인터페이스는 클래스 또는 인터페이스를 그룹화하는 목적으로 사용된다.
· IT/Java
중첩 클래스(Nested Class) 클래스 내부에 선언한 클래스로 클래스 안에 또 다른 클래스가 정의된 것이다. 관련 있는 것을 하나로 묶고 싶을 때 사용한다. 특정 클래스를 자신의 클래스 내부적인 용도로만 사용하고자 할 때 효율적이다. 두 클래스의 멤버들을 서로 쉽게 접근할 수 있다. 외부에 불 필요한 관계 클래스를 감추어 코드의 복잡성을 줄일 수 있다. 클래스의 멤버로 선언되는 중첩 클래스는 멤버 클래스이며, 메소드 내부에 선언되는 중첩 클래스를 로컬 클래스라 한다. 선언 위치에 따른 분류 선언 위치 객체 생성 조건 멤버 클래스 인스턴스 멤버 클래스 class A { class B {...} } A 객체를 생성해야 B 객체를 생성할 수 있다. 정적 멤버 클래스 class A { static clas..
· IT/Java
타입 변환 타입 변환은 인터페이스와 구현 클래스 간에 발생한다. 자동 타입 변환(promotion) 인터페이스 변수 = 구현객체; 인터페이스 변수에 구현 객체를 대입하면 인터페이스 타입으로 자동 타입 변환된다. 부모 클래스가 인터페이스를 구현하고 있으면 자식 클래스도 인터페이스 타입으로 자동 타입 변환될 수 있다. 강제 타입 변환(Casting) 구현클래스 변수 = (구현클래스) 인터페이스변수; 인터페이스 타입으로 자동 타입 변화된 후, 다시 구현 클래스 타입으로 변환되는 것이다. 구현 객체를 모르거나, 변경될 수 있어 확인 없이 강제 타입을 변환하면 예외(ClassCastException)가 발생하니 객체의 타입을 확인하는 instanceof 연산자를 사용해 확인 후 변환한다.
· IT/Java
abstract method [public abstract] 리턴타입 메소드명(매개변수, ...); 추상 메소드는 리턴 타입, 메소드명, 매개변수만 기술되고 중괄호를 붙이지 않는 메소드이다. public abstract를 생략하더라도 컴파일 과정에서 자동으로 붙는다. 내부의 모든 메서드는 추상 메소드로 정의한다. 구현 클래스에서 추상 메소드 재정의 시 public보다 더 낮은 접근 제한으로 재정의할 수 없다. default method [public] default 리턴타입 메소드명(매개변수, ...) {...} default 메소드를 추가하면 구현 클래스에서 필수로 메소드를 재정의 하지 않아도 된다. 추상 메소드는 실행부(중괄호 {})가 없지만, 디폴트 메소드는 실행부가 있다. 실행부에서는 상수 필드를..
· IT/Java
인터페이스는 데이터를 저장할 수 없기 때문에 상수 필드만 선언할 수 있다. [public static final] 타입 상수명 = 값; 인터페이스에 선언된 필드는 모두 public static final 특성을 갖기에 생략하더도 자동적으로 컴파일 과정에서 붙는다. 상수명은 대문자로 작성하며, 서로 다른 단어로 구성 시 언더바(_)로 연결한다. public interface Example { // 상수 선언 int MAX_NUMBER = 100; } 상수는 구현 객체와 관련 없는 인터페이스 소속 멤버로 인터페이스에서 바로 접근하여 상수값을 읽을 수 있다.
· IT/Java
인터페이스(Interface) 클래스를 이용하여 다중 상속을 할 경우 메소드 출처의 모호성 등의 문제 발생으로 자바에서는 클래스를 통한 다중 상속을 지원하지 않는다. 다중 상속의 이점을 버릴 수 없기에 인터페이스를 통해 다중 상속을 지원하고 있다. 인터페이스는 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미한다. 추상 클래스는 추상 메소드뿐만 아니라 생성자, 필드, 일반 메소드도 포함할 수 있지만 인터페이스는 추상 메소드와 상수만 포함할 수 있다. 인터페이스 선언 interface 인터페이스명 { ... } // default 접근 제한 public interface 인터페이스명 { ... } // pulic 접근 제한 p..
· IT/Java
추상(abstract) 추상은 실체 간에 공통되는 특성을 추출한 것을 말한다. 추상 클래스(abstract class) 추상적으로 밖에 그려지지 않은 클래스로, 클래스가 전체적인 구성을 다 가지지 못한 채 설계만 되어 있는 클래스다. 객체를 생성할 수 있는 클래스를 실체 클래스라 하면, 실체 클래스의 공통적인 필드나 메소드를 추출해서 선언한 클래스가 추상 클래스다. 추상 클래스는 실체 클래스의 부모 역할을 한다. 실체 클래스는 추상 클래스를 상속해서 공통적인 필드나 메소드를 물려 받을 수 있다. 실체 클래스의 공통되는 필드와 메소드를 추출해서 만들어진거라 new 연산자를 사용하여 객체를 직접 생성할 수 없다. class Child extends Parent {...} 실체 클래스를 만들기 위한 부모 클래..
· IT/Java
instanceof 객체가 어떤 클래스인지, 어떤 클래스를 상속 받았는지 객체의 타입을 확인할 때 사용한다. boolean result = 객체 instanceof 타입; boolean result = parent instanceof Child 좌항의 객체가 우항의 타입이면 true, 아니면 false를 산출한다. 강제 타입 변환하기 전 매개값이 맞는지 여부를 확인하기 위해 사용한다. 예제 코드 package ch07.sec09; public class Person { // 필드 선언 public String name; // 생성자 선언 public Person(String name) { this.name = name; } // 메소드 선언 public void walk() { System.out.pri..
· IT/Java
다형성(Polymorphism) 하나의 객체가 여러가지 타입을 가질 수 있으며 사용 방법은 동일하지만 실행 결과가 다양하게 나오는 성질이다. 객체 사용 방법이 동일하다는 것은 동일한 메소드를 가지고 있다는 뜻이다. 1. 필드 다형성 필드 타입(사용 방법)은 동일하지만 대입되는 객체에 따라 실행 결과가 다양하다. 예제 코드 더보기 package ch07.sec08.exam01; public class Tire { public void roll() { System.out.println("회전합니다."); } } package ch07.sec08.exam01; public class HankookTire extends Tire { @Override public void roll() { System.out.pr..
Huitopia
'자바' 태그의 글 목록 (2 Page)