Programming/Java
-
[Java 자바] 9. 중첩 ② 중첩 인터페이스, 익명 객체Programming/Java 2022. 8. 9. 20:51
9-3. 중첩 인터페이스 - 클래스 멤버로 선언된 인터페이스를 의미 - 클래스 내부에 선언함으로써 해당 클래스와 긴밀한 관계를 맺는 구현 클래스를 만들기 위해 사용 - 특히 UI프로그래밍에서 이벤트를 처리할 목적으로 자주 활용됨 //Button.java public class Button { // 인터페이스 타입 필드 OnClickListener listener; // 매개 변수의 다형성 void setOnClickListener(OnClickListener listener) { this.listener = listener; } // 구현 객체의 onClick() 메소드 호출 void touch() { listener.onClick(); } // 중첩 인터페이스 interface OnClickListen..
-
[Java 자바] 9. 중첩 ① 중첩 클래스Programming/Java 2022. 8. 9. 20:51
9-1. 중첩 클래스 - 클래스 내부에 선언한 클래스로 중첩 클래스를 사용할 경우 두 클래스의 멤버를 서로 쉽게 접근할 수 있으며, 외부에는 불필요한 관계 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있음 - 클래스 내부에 선언되는 위치에 따라 두 가지로 분류 선언 위치에 따른 분류 선언 위치 설명 멤버 클래스 인스턴스 멤버 클래스 class A { class B {...} } A 객체를 생성해야만 사용할 수 있는 B 중첩 클래스 정적 멤버 클래스 class A { static class B {...} } A 클래스로 바로 접근할 수 있는 B 중첩 클래스 로컬 클래스 class A { void method() { class B {...} } } method()를 실행할 때만 사용할 수 있는 B 중첩 클래..
-
[Java 자바] 8. 인터페이스 ② 사용 방법, 인터페이스 상속, 디폴트 메소드Programming/Java 2022. 8. 9. 20:50
8-4. 인터페이스 사용 인터페이스로 구현 객체를 사용하려면 인터페이스 변수를 선언하고 구현 객체를 대입해야 함 8-4-1. 추상 메소드 사용 구현 객체가 인터페이스 타입에 대입되면 인터페이스에 선언된 추상 메소드를 개발 코드에서 호출할 수 있음. 이 때, 메소드는 구현 객체에서 선언된 메소드가 자동으로 실행됨. public class RemoteControlTest { public static void main(String[] args) { RemoteControl rc = new Television(); rc.turnOn();// TV가 켜집니다. } } 8-4-2. 디폴트 메소드 사용 - 디폴트 메소드는 인터페이스에 선언되지만, 인터페이스를 통해 바로 사용은 불가능함 - 보통 인터페이스의 모든 구현..
-
[Java 자바] 8. 인터페이스 ① 선언과 구현Programming/Java 2022. 8. 9. 00:24
8-1. 인터페이스의 역할 인터페이스: 객체의 사용 방법을 정의한 타입 - 클래스는 다중 상속이 불가능하지만, 인터페이스는 다중 상속이 가능함 - 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스 - 오로지 추상메소드와 상수만 포함 가능 8-2. 인터페이스 선언 8-2-1. 인터페이스 선언 [접근제한자] interface 인터페이스명 { // 상수, 선언되는 변수는 모두 상수로 적용되기 때문에 public static final과 같게 취급 데이터타입 상수명 = 값; (public static final)데이터타입 상수명 = 값; // 메소드, 선언되는 메소드는 모두 추상 메소드로 적용되기 때문에 public abstract와 같게 ..
-
[Java 자바] 7. 상속 ③ 추상클래스 (Abstract Class)Programming/Java 2022. 8. 8. 21:45
7-8. 추상 클래스 7-8-1. 추상 클래스의 개념 자식클래스에서 반드시 오버라이딩해야만 사용할 수 있는 메소드로 선언부만 존재하며, 구현부는 작성되어 있지 않음 - 이 구현부를 자식클래스에서 오버라이딩해서 사용 - 상속받는 자식 클래스가 반드시 추상 메소드를 구현하도록 하기 위해 사용 - 상속 전용 클래스 7-8-2. 추상 클래스의 용도 1) 실체 클래스들의 공통된 필드와 메소드의 이름 통일 목적 - 실체 클래스를 설계하는 사람이 여럿일 경우, 클래스마다 필드와 메소드가 제각기 다른 이름을 가질 수 있음 (ex. 소유자의 이름을 저장하는 필드를 Telephone에서는 owner, Smartphone에서는 user 라고 할 수 있음) 2) 실체 클래스를 작성할 때 시간을 절약 - 공통적인 필드와 메소드..
-
[Java 자바] 7. 상속 ② 타입 변환과 다형성, instanceofProgramming/Java 2022. 8. 7. 23:50
7-7. 타입 변환과 다형성 7-7-1 . 자동 타입 변환 (Promotion) 실행 도중에 자동적으로 타입 변환이 일어나는 것 - 자식은 부모의 특징과 기능을 상속 받기 때문에 부모와 동일하게 취급될 수 있음 - 아래 코드의 경우, Child클래스로 Child객체를 생성하고 이것을 Parent참조변수에 대입하면 자동 타입 변환이 일어남 - 바로 위의 부모가 아니더라도, 상속 계층에서 상위 타입이라면 자동 타입변환이 일어날 수 있음 Child c = new Child(); Parent p = c; c == p // true - 부모 타입으로 자동 타입 변환된 이후에는 부모 클래스에 선언된 필드와 메소드만 접근 가능 - 변수는 자식 객체를 참조하지만 변수로 접근 가능한 멤버는 부모 클래스 멤버로만 한정 -..
-
[Java 자바] 7. 상속 ① 클래스 상속, super, 메소드 오버라이딩Programming/Java 2022. 8. 7. 17:31
7-1. 상속이란? 기존 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것 - 기존에 정의되어 있던 클래스: 부모 클래스(parent class) == 상위 클래스(super class) == 기초 클래스(base class) - 상속을 통해 새롭게 정의된 클래스: 자식클래스(child class) == 하위 클래스(sub class) == 파생 클래스(derived class) - 상속은 코드의 중복을 줄여주고 개발시간 단축을 통해 효율성을 높일 수 있음 - 접근제한자에 따라 상속을 받아 접근할 수 있는 필드와 메소드는 달라질 수 있음 (부모클래스의 private 필드, 메소드는 접근 불가) 7-2. 클래스 상속 extends 를 통해 부모클래스 상속 가능 - 다중 상속은 불가 //Pa..
-
[Java 자바] 6. 클래스 ⑥ 접근 제한자 (public, protected, default, private), Getter/Setter, 어노테이션Programming/Java 2022. 7. 31. 16:29
6-13. 접근 제한자 클래스, 필드, 메서드 등의 선언부에서 접근 허용 범위를 지정하는 역할의 키워드 [ 접근 제한자의 종류 ] 접근 제한자 적용 대상 클래스 내부 동일 패키지 상속(타 패키지) 다른 클래스 public 클래스, 필드, 생성자, 메소드 접근 가능 접근 가능 접근 가능 접근 가능 protected 필드, 생성자, 메소드 접근 가능 접근 가능 접근 가능 접근 불가능 (default) 클래스, 필드, 생성자, 메소드 접근 가능 접근 가능 접근 불가능 접근 불가능 private 필드, 생성자, 메소드 접근 가능 접근 불가능 접근 불가능 접근 불가능 6-13-1. 클래스의 접근 제한 클래스에 사용 가능한 접근 제한자는 public, (default) 두 가지 - 같은 패키지 내에서만 사용할 것인..