[JAVA] Day_04. Inner class

JAVA 2018. 3. 26. 19:15 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package Day_04;
 
 
public class Class
    private int a = 10;
    public int b = 20;
    protected static int c = 30;
    
    class Member // 1. Inner class 
    {
        public void disp() // Inner class method
        {
            System.out.println(a);
            System.out.println(b);
            System.out.println(c);
        }
    }
 
    public static void main(String[] args)
    {
        // 바깥클래스 생성
        // 바깥클래스 객체명 = new 바깥클래스 생성자();
        Class mm = new Class();  
        // 안쪽클래스 생성
        // 바깥클래스명.안쪽클래스명 객체명 = 바깥클래스 객체명.new 안쪽클래스 생성자();
        Class.Member m = new Class().new Member();
        m.disp();
    }
}
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package Day_04;
 
public class MemberInner2
{
    private int a = 10;
    public int b = 20;
    protected static int c = 30// static
    
    static class Member // 2. static
    {
        public void disp()
        {
            //System.out.println(a);
            //System.out.println(b);
            System.out.println(c);
        }
    }
 
    public static void main(String[] args)
    {
        //MemberInner2.Member m = new MemberInner2().new Member();
        //m.disp();
        MemberInner2.Member m = new MemberInner2.Member();
        m.disp();
        
    }
}
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package Day_04;
 
// Local inner class : 메소드 안에서 생성되는 클래스
// 불러오고 싶다면, 메소드 안에 클래스를 만들어야 한다.
public class MemberInner3
{
    private int a = 10;
    public int b = 20;
    protected static int c = 30;
    
    public void output() // 메소드
    {
        class Member // 3. local inner class
        {
            public void disp()
            {
                System.out.println(a);
                System.out.println(b);
                System.out.println(c);
            }
        }
        Member mm = new Member(); // 메소드 안에 클래스생성
        mm.disp();
    }
    public static void main(String[] args)
    {
        MemberInner3 m = new MemberInner3();
        m.output();
    }
}
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package Day_04;
 
//Anonymous inner class
//인터페이스나 클래스의 메소드를 오버라이딩 해야만, 이 클래스가 사용이됨
abstract class Abs 
{                    
    abstract void disp();
}
 
public class MemberInner4
{
    private int a = 10;
    public int b = 20;
    protected static int c = 30;
    
    public Abs abs = new Abs()
    {
        @Override
        void disp()
        {
            System.out.println(a);
            System.out.println(b);
            System.out.println(c);
        }
    };
    /*public void disp()
    {
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
    }*/
    
    public static void main(String[] args)
    {
        MemberInner4 m = new MemberInner4();
        m.abs.disp();
    }
}
cs


'JAVA' 카테고리의 다른 글

[JAVA] Day_06. Member inner class & Anonymous inner class로 바꾸기  (0) 2018.03.26
제네릭 정리2  (0) 2018.03.22
제네릭 정리1  (0) 2018.03.22
제네릭  (0) 2018.03.22
내부 클래스 2  (0) 2018.03.22
Posted by 너래쟁이
: