티스토리 뷰
day16 190312
금일은 중첩 클래스와 익명 객체에 대해 배웠습니다.
익명 객체는 웹개발보다는 앱개발(안드로이드) 에서 정말 많이 쓰이는 기능이라고 하시니, 앱개발 분야에 관심이 있으신 분들은
자세히 공부해보시는 걸 추천드리겠습니다.
<중첩클래스>
: 클래스안에 클래스가 중첩되어 있는 형태.
사용빈도는 낮음.
하나의 클래스 외에 다른 클래스에서 사용될 일이 없을 때, 그 클래스 안에 클래스를 만든다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | public class Outter { // 인스턴스 멤버 내부 클래스 // Outter객체가 생성된 다음에만 사용할 수 있는 내부 클래스 // Outter객체의 모든 멤버(필드, 메소드)를 사용할 수 있다. public class Inner1 { } // 정적 멤버 내부 클래스 // Outter객체 생성없이 사용할 수 있는 내부 클래스 // Outter의 정적 멤버(정적필드, 정적 메소드)만 사용할 수 있다. public static class Inner2 { } // public void method() { // 로컬 내부 클래스 // 메소드가 실행되는 동안에만 사용할 수 있는 내부 클래스 // Outter객체의 모든 멤버를 사용할 수 있다. // .. class Inner3{ } } } | cs |
위 Outter클래스를 컴파일하면, 저장 디렉토리에
왼쪽 사진과 같이 class파일이 생긴 것을 볼 수 있다.
Outter클래스(바깥 클래스)파일이 생기고,
멤버내부클래스인 Outter$Inner1.class,
정적멤버내부클래스인 Outter$Inner2.class,
로컬내부클래스인 Outter$1Inner3.class
가 생성이 된다.
로컬내부클래스는 Outter$숫자Inner 형식이 되는 다른 점을 볼 수 있다.
** 로컬내부클래스
-메소드가 실행될 때마다 변수가 생성되고, 변수는 스텍구조로 저장이 된다.
-바깥 클래스의 변수가 복제된다. 스텍 가장 아래 변수가 그 위로 복제된다.
-값은 상수여야 한다. (>> final을 붙여야한다. *java8부터는 생략가능)
<익명 객체>
: 인터페이스나 추상클래스 타입의 객체 생성을 할때, 즉석에서 구현하여 사용하는 객체.
- 객체 생성 수행문 바로 뒤에 구현부를 만들어준다. 객체명이 없음.
- 목적 : 한번 사용하고 마는 기능들을 일일이 다 구현되는 것을 방지.
1 2 3 | public interface Pen { void draw(); } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | public class PenApp { public static void main(String[] args) { /* 익명객체 - 객체 생성할 수 없는 인터페이스/추상클래스를 가지고 객체 생성시점에 추상화된 메소드를 즉석에 구현(재정의)해서 객체를 객체를 생성한 것 - 별도의 구현클래스 정의없이 객체 생성이 가능하다. */ Pen redPen = new Pen() { // 추상화된 메소드 재정의 public void draw() { System.out.println("빨갛게 그리기..."); } }; redPen.draw(); Pen bluePen = new Pen() { public void draw() { System.out.println("파랗게 그리기..."); } }; bluePen.draw(); } } | cs |
Pen이라는 인터페이스를 만들고, PenApp을 통해 Pen을 구현하는데 이때, Pen에서 구현되지 않은 메소드들을,
10~15행, 18~22행처럼 즉석에서 구현부를 만들어 익명 객체를 만들고, 16,23행에서 사용한다.
금일예제파일에 좀더 응용된 중첩클래스와 익명객체 예제가 있으니 활용해보시기 바랍니다.
금일 과제>> Member.java / MemberService.java / MemberApp.java
회원정보 등록기능 (문자열) (나머지 정수형)
- 회원정보 : 회원번호, 이름, 비밀번호, 포인트
로그인 기능
- 회원번호, 비밀번호를 전달받아서 이미 등록된 회원정보와 비교해서 로그인시키는 기능
- 로그인에 성공한 회원만 조회기능, 출력기능을 사용할 수 있다.
로그아웃 기능
-로그인을 해제하는 기능
회원정보 조회기능
- 회원번호를 전달받아서 그 회원번호에 해당하는 회원정보를 제공하는 기능
회원정보 출력기능
- 모든 회원정보를 화면에 출력하는 기능
'Programming > JAVA' 카테고리의 다른 글
JAVA Web#17 자바 API : Object (0) | 2019.03.18 |
---|---|
JAVA Web#17 Day 17 Eclipse 설치 & 초기설정 (0) | 2019.03.18 |
JAVA Web#15 Day 15 인터페이스 (interface) (0) | 2019.03.14 |
JAVA Web#14 Day 14 super & 추상화 (0) | 2019.03.10 |
JAVA Web#13 Day 13 Casting & InstanceOf (0) | 2019.03.08 |
- Total
- Today
- Yesterday
- API
- 자바
- sql
- inline element
- jhta
- 태그
- 데이터베이스
- 중앙HTA
- 이클립스
- Database
- 자바 국비
- 자바 기초
- 인라인엘리먼트
- 비등가조인
- 자바 독학
- Oracle
- block element
- 국비
- copotter
- Class
- h#
- 스프링
- 프레임워크
- 브라캣
- html
- 블록엘리먼트
- spring
- querybox
- 오라클 문법
- 강제형변환
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |