●클래스 안에 클래스가 들어가는것(중첩)
익명클래스를 많이 쓴다.
static 클래스 사용
package org.example;
// static 으로 해야 num 값이 공유가 된다.
// static 함수는 static 변수만 공유 된다. heap 영역 변수 사용 x
// heap 메서드 이면 heap영역 변수, static변수 사용가능
// 메모리상에 올려놓고 사용해야 한다.
class Outer{
private static int num = 0;
public static class Nested1{
public void add(int n){
for (int i = 0; i < n; i++) {
num += n;
}
}
}
public static class Nested2{
public int get(){
return num;
}
}
}
public class Main {
public static void main(String[] args) {
Outer.Nested1 nested1 = new Outer.Nested1();
nested1.add(10);
Outer.Nested2 nested2 = new Outer.Nested2();
System.out.println(nested2.get());
}
}
nested1.add 에 10을 넣게 되면 0부터 9까지 더해서 num값에 들어가게 된다.
nested2에 출력을 하면 콘솔창에 값이 나오게 된다.
static 을 사용 안하게 되면 객체 생성을 따로 해줘야 한다.
package org.example;
class Outer1{
private int num =0;
public class Member{
void add(int n){
num +=n;
}
int get(){
return num;
}
}
}
public class Main2 {
public static void main(String[] args) {
Outer1 outer1 = new Outer1();
Outer1 outer2 = new Outer1();
Outer1.Member o1 = outer1.new Member();
Outer1.Member o2 = outer2.new Member();
o1.add(100);
System.out.println(o1.get());
o2.add(50);
System.out.println(o2.get());
}
}
'java' 카테고리의 다른 글
람다의 방식 (0) | 2024.02.07 |
---|---|
이너 클래스(멤버 로컬 익명) (0) | 2024.02.07 |
어노테이션 사용문법 (0) | 2024.02.06 |
가변인자 선언에 대한 컴파일 처리 (0) | 2024.02.06 |
열거형 (0) | 2024.02.06 |