일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- hyperledger transaction
- #JAVASCRIPT
- #3차원배열
- html youtube
- html code
- html multimedia
- border-box
- #CallByAddress
- #C++ has~a
- #android activity
- #다차원포인터
- html object
- html plug-in
- html charset
- #성적관리프로그램
- 하이퍼레저패브릭
- #자바상속#자바이즈어#is~a
- html5 new tag
- html video
- html id
- git flow
- relative path
- 토큰경제
- docker example
- #C++ 연산자함수오버로딩
- #bubbleSort
- #binary
- mac terminal command
- #1차원배열
- #2차원배열
- Today
- Total
A sentimental robot
Inner class 본문
Inner class 란?
- 클래스 안에 클래스를 가지고 있는 구조
- has a 관계는 항상 객체가 독립적이지만 inner class는 애초에 클래스 안에 클래스를 가진다.
- outer class의 ( private이든 뭐든 )멤버를 자유롭게 사용할 수 있다.
- 이벤트 처리할때 많이 쓰인다.
- outer class를 생성한 후, inner class를 따로 생성해야 한다.
- 종류
1) member class( instance class ) -> 가장 많이 쓰임
2) static class
3) local class
4) anonymous class -> 가장 많이 쓰임, 이벤트 처리 시 주로 사용, 추상클래스와 같이 사용됨
member class
public class InnerTest {
private int a;
public InnerTest(int a) {
this.a = a;
}
class A { // member inner class
public void disp(){
System.out.println(a);
}
}
public static void main(String[] args) {
//InnerTest it = new InnerTest(100);
// InnerTest.A it1=it.new A();
InnerTest.A it1=new InnerTest(100).new A(); // 위의 두줄을 한줄로 만들기!
it1.disp();
}
}
local class
public class InnerTest {
private int a;
public InnerTest(int a) {
this.a = a;
}
public void out() { // local inner class > class가 메소드 안에 있음
class A {
public void disp() {
System.out.println(a);
}
}
A aa=new A(); //객체 밖에 객체만들기
aa.disp();
}
public static void main(String[] args) {
InnerTest it=new InnerTest(100);
it.out();
}
}
anonymous class ★
abstract class B{
abstract void disp();
}
public class InnerTest {
private int a;
public InnerTest(int a) {
this.a = a;
}
B bb=new B(){ // anonymous inner class
void disp(){
System.out.println("익명클래스"+a); // 오버라이딩으로 구체화 시키기
}
}; // 추상클래스는 객체 생성못하지만, 익명클래스를 사용하면 생성 가능하다.
public static void main(String[] args) {
InnerTest it=new InnerTest(100);
it.bb.disp();
}
}
'Java' 카테고리의 다른 글
Thread Synchronization (0) | 2017.12.29 |
---|---|
Thread (0) | 2017.12.29 |
Interface (0) | 2017.12.29 |
추상클래스를 이용한 스택,큐! (0) | 2017.12.29 |
Abstract class,추상클래스에 대해서 (0) | 2017.12.29 |