객체 지향 프로그래밍 - 중첩 선언과 익명 객체 (5) 썸네일형 리스트형 익명 객체 익명 객체 이름이 없는 객체. 명시적으로 클래스를 선언하지 않기 때문에 쉽게 객체를 생성할 수 있음 필드값, 로컬 변수값, 매개변수값으로 주로 사용 익명 자식 객체 부모 클래스를 상속받아 생성되는 객체 부모 타입의 필드, 로컬 변수, 매개변수의값으로 대입할 수 있음 출처, 이것이 자바다 package ch09.sec07.exam01; /* 일반적인 메소드는 클래스이름에 구성요소로 관리가된다. 익명구현객체의 재정의된 메소드들은 클래스이름 하에 관리가 되지않고, 단 일회성으로 클래스 이름없이 사용이 되기 때문에 익명이라는 표현을 사용한다. */ public class Tire { public void roll() { System.out.println("일반 타이어가 굴러갑니다."); } } package c.. 바깥 멤버 접근 바깥 클래스의 멤버 접근 제한 정적 멤버 클래스 내부에서는 바깥 클래스의 필드와 메소드를 사용할 때 제한이 따름 출처, 이것이 자바다 정적 멤버 클래스는 바깥 객체가 없어도 사용 가능해야 하므로 바깥 클래스의 인스턴스 필드와 인스턴스 메소드는 사용하지 못함 package ch09.sec05.exam01; public class A { //new 연산가가 힙영역에 메모리 생성시 사용. int field1; void method1() {} //JVM이 A클래스가 사용시, 먼저 단 1번만 메소드영역에 메모리 생성 static int field2; static void method2() {} //인스턴스 멤버 클래스 A a = new A(); A.B b = a.new B(); b.method(); class B.. 로컬 클래스 로컬 클래스 생성자 또는 메소드 내부에서 다음과 같이 선언된 클래스 생성자와 메소드가 실행될 동안에만 객체를 생성할 수 있음 출처, 이것이 자바다 package ch09.sec04.exam01; /* * 로컬 클래스 : 생성자, 메소드 내부에 정의한 클래스. * 생성자, 메소드 호출시에만 로컬 클래스 객체 생성이 이루어진다. */ public class A { //생성자 A() { class B {} B b = new B(); } //메소드 void method() { class B {} B b = new B(); } } package ch09.sec04.exam02; /* * 로컬 클래스 예제 */ public class A { //메소드 void useB() { //로컬 클래스 class B { in.. 정적 멤버 클래스 정적 멤버 클래스 static 키워드와 함께 A 클래스의 멤버로 선언된 B 클래스 출처, 이것이 자바다 정적 멤버 클래스는 주로 default 또는 public 접근 제한을 가진다. package ch09.sec03.exam01; /* * 중첩클래스 * - 정적(static)멤버 클래스 */ public class A { //중첩 클래스 - 인스턴스 클래스 class C {}; //중첩 클래스 - 정적 클래스 선언(정의) static class B {} //인스턴스 필드사용 B field1 = new B(); //정적 필드사용 static B field2 = new B(); //생성자 A() { B b = new B(); } void method1() { B b = new B(); } static voi.. 중첩, 인스턴스 멤버 클래스 중첩 클래스 클래스 내부에 선언한 클래스. 클래스의 멤버를 쉽게 사용할 수 있고 외부에는 중첩 관계 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있음 멤버 클래스: 클래스의 멤버로서 선언되는 중첩 클래스 로컬 클래스: 메소드 내부에서 선언되는 중첩 클래스 출처, 이것이 자바다 인스턴스 멤버 클래스 A 클래스의 멤버로 선언된 B 클래스 출처, 이것이 자바다 인스턴스 멤버 클래스 B는 주로 A 클래스 내부에서 사용되므로 private 접근 제한을 갖는 것이 일반적 package ch09.sec02.exam01; /* * 중첩클래스 : 클래스 내부에 클래스를 정의하는 개념. */ public class A { //인스턴스 멤버클래스. new가 사용 안함. class B { /* 내용 */ } //인스턴스 필드.. 이전 1 다음