gwooden_코린이
java_내부클래스_221130(8일차) 본문
728x90
내부클래스 - 접근이 쉽게 가능한 것
public class A{ // 하나의 클래스안에서 전부 처리할 수 있다는 것
public class B{ //내부 클래스는 다른 타클래스에서 접근하기 어려움
//직접적으로는 접근 자체가 안됨
//외부 클래스를 타고 내부 클래스로 들어가야 가능
}
}
인스턴스 클래스
정적 멤버 클래스
로컬 클래스
package 내부클래스;
public class Main {
public static void main(String[] args) {
A a = new A(); //A클래스에 대한 객체 생성
/** static class B **/
A.B b = new A.B(); //A클래스 안에 있는 B클래스에 대한 객체 생성
b.var1 = 3;
b.method1();
// A.b.var2 = 3; 아래와 동일
b.var2 = 3; //static 변수는 클래스 내부에 공용으로 사용되는 변수
b.method2();
/** public class C **/
A.C c = a.new C(); //A클래스로 생성된 a객체를 이용해 A내부에 C클래스에 대한 c 객체 생성
c.var1 = 3;
c.method();
/** void method() **/
/** class D**/
a.method();
}
}
A 객체 생성 B 객체 생성 static 내부 클래스의 메서드1 static 내부 클래스의 static 메서드2 C 객체 생성 C 클래스의 메서드 D 객체 생성 C 클래스의 메서드 |
package 내부클래스;
public class A {
A() {
System.out.println("A 객체 생성");
}
/** B클래스 시작 **/
static class B {//내부에 새로운 클래스 생성 -> static으로 선언된 B 클래스
//아래 있는 코드는 B라는 내부 클래스 안에 있는 것
B() {
System.out.println("B 객체 생성");
}
int var1; //변수 1
static int var2; //변수2
void method1() { //메서드 1
System.out.println("static 내부 클래스의 메서드1");
}
static void method2() { //메서드 2
System.out.println("static 내부 클래스의 static 메서드2");
}
}
/** B클래스 끝 **/
/** C클래스 시작 **/
public class C {
C() { //생성자 1
System.out.println("C 객체 생성");
}
int var1; //변수 1
void method() { //메서드 1
System.out.println("C 클래스의 메서드");
}
}
/** C클래스 끝 **/
/** 외부 A 클래스에 method() 메서드 시작 **/
void method() {
/** D클래스 시작 **/
class D {
D() { //생성자 1
System.out.println("D 객체 생성");
}
int var1; //변수 1
void method() { //메서드 1
System.out.println("C 클래스의 메서드");
}
} /** D클래스 끝 **/
//A.method A에 대한 메서드가 호출 되면 객체가 생성
D d = new D();
d.var1 = 3;
d.method();
}
/** 외부 A 클래스에 method() 메서드 끝 **/
}
728x90
'java > 8일차' 카테고리의 다른 글
java_예외처리_221130(8일차) (0) | 2022.11.30 |
---|---|
java_내부인터페이스_221130(8일차) (0) | 2022.11.30 |
java_다형성 연습01_221130(8일차) (0) | 2022.11.30 |
java_다형성_221130(8일차) (0) | 2022.11.30 |
java_추상/인터페이스_221130(8일차) (0) | 2022.11.30 |
Comments