본문 바로가기
java

네스티스(중첩) 클래스

by improve 2024. 2. 7.

●클래스 안에 클래스가 들어가는것(중첩)

익명클래스를 많이 쓴다.

 

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