Inner 클래스 (내부 클래스)
- member
package Inner;
// member Inner
public class InnerTest { // 외부 객체
private int a;
protected int b;
public int c;
public InnerTest() {
a = 20;
b = 30;
c = 10;
}
//static 객체와 무관하게 만들어짐
class MemberInner{ // member inner class
public void disp() {
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
public static void main(String[] args) {
// InnerTest it = new InnerTest();
InnerTest.MemberInner mi = new InnerTest().new MemberInner();
mi.disp();
}
}
/*
* inner class ( 내부클래스 )
* : 독립된 클래스가 아니라. 특정클래스에서 멤버처럼 사용되고자 만든 클래스
* : outer class의 멤버를 자유롭게 사용하기 위해서 사용.
* : 이벤트처리 할때 많이 사용 ( 그래픽 처리 )
*
* 1. member inner class
* 2. static inner class
* 3. local inner class
* 4. anonymous inner class
*
* : 아우터의 멤버를 내꺼처럼 쓰려고
* : 실제 쓰는건 2가지 member, anonymous
*
*/
- static
package Inner;
// static Inner
public class InnerStatic {
private int a;
protected int b;
public int c;
static int d = 50;
public InnerStatic() {
a = 20;
b = 30;
c = 10;
}
//static 객체와 무관하게 만들어짐
static class MemberInner{ // member inner class
public void disp() {
System.out.println(d);
// System.out.println(a);
// System.out.println(b);
// System.out.println(c);
}
}
public static void main(String[] args) {
InnerStatic.MemberInner st = new InnerStatic.MemberInner(); // 스태틱을 할때 아우터를 통해서 이너의 생성자를 호출함.
st.disp();
}
}
- local
package Inner;
// local Inner
public class InnerLocal {
private int a;
protected int b;
public int c;
static int d = 50;
public InnerLocal() {
a = 20;
b = 30;
c = 10;
}
public void disp() {
class LocalInner{
void output() {
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
LocalInner li= new LocalInner();
li.output(); // 지역이라 지역에서 해결해야함.
}
public static void main(String[] args) {
InnerLocal il = new InnerLocal();
il.disp();
}
}
- anonymous
package Inner;
abstract class Abs{
abstract void out2();
}
public class InnerAnonymous {
private int a;
protected int b;
public int c;
public InnerAnonymous() {
a = 20;
b = 30;
c = 10;
}
public void disp() {
new Abs() {
void out2() {
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}.out2();
}
public static void main(String[] args) {
InnerAnonymous am = new InnerAnonymous();
am.disp();
}
}
반응형
'자바과정 > Java' 카테고리의 다른 글
Java 기초 - 10일차 (0) | 2021.02.18 |
---|---|
Java 실습(어댑터) - 9일차 (0) | 2021.02.17 |
Java 실습(스택&큐) - 7일차 (0) | 2021.02.15 |
Java 기초 - 7일차 (0) | 2021.02.15 |
Java 실습(상속클래스) - 6일차 (0) | 2021.02.04 |
댓글