JAVA 입문 시작
22.11.30 내부클래스
강준석
2022. 11. 30. 14:14
728x90
말그대로
클래스안에 클래스를 만드는것
요런식으로 만듬
public class A{
public calss B {
}
}
package 내부클래스;
public class A {
A() {
System.out.println("A 객체 생성");
}
/** B클래스 시작 **/
static class B {//내부에 새로운 클래스 생성
//아래 있는 코드는 B라는 내부 클래스 안에 있는 것
B() {
System.out.println("B 객체 생성");
}
int var1;
static int var2;
void method1() {
System.out.println("static 내부 클래스의 메서드1");
}
static void method2() {
System.out.println("static 내부 클래스의 static 메서드2");
}
}
/** B클래스 끝 **/
/** C클래스 시작 **/
public class C {
C() {
System.out.println("C 객체 생성");
}
int var1;
void method() {
System.out.println("C 클래스의 메서드");
}
}
/** C클래스 끝 **/
/** method() 메서드 시작 **/
void method() {
/** D클래스 시작 **/
class D {
D() {
System.out.println("D 객체 생성");
}
int var1;
void method() {
System.out.println("C 클래스의 메서드");
}
} /** D클래스 끝 **/
D d = new D();
d.var1 = 3;
d.method();
}
/** method() 메서드 끝 **/
}
package 내부클래스;
import java.lang.reflect.Method;
public class Main {
public static void main(String[] args) {
A a = new A();
A.B b = new A.B(); // A클래스 안에 B클래스 b 객체 생성(A.B b)
b.var1 = 3;
b.method1();
A.B.var2 = 3; //A.B.var2 = 3; 와 같다
A.B.method2(); //A.B.method2(); 와 같다
A.C c = a.new C();
c.var1 = 3;
c.method();
a.method();
}
}
결과
A 객체 생성
B 객체 생성
static 내부 클래스의 메서드1
static 내부 클래스의 static 메서드2
C 객체 생성
C 클래스의 메서드
D 객체 생성
C 클래스의 메서드
내부인터페이스
예시)
메인문
package 내부인터페이스;
public class Main {
public static void main(String[] args) {
Outer out = new Outer();
InterfaceExImple a = new InterfaceExImple();
out.setInterfaceEx(new InterfaceExImple() );
out.outerMethod();
}
}
기본문안에 인터페이스 문
package 내부인터페이스;
public class Outer {
interface InterfaceEx {
void method();
}
InterfaceEx ie;
void setInterfaceEx(InterfaceEx ie) {
this .ie = ie;
}
void outerMethod() {
ie.method();
}
}
이건 뭔 개소리야;;
728x90