suuuuu 2018. 12. 6. 19:55
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
39
40
41
42
43
44
45
46
47
48
49
50
package Pack01;
import java.util.LinkedList;
import java.util.Random;
import java.util.Scanner;
import java.util.concurrent.SynchronousQueue;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
 
abstract class Apple {
    abstract void func1();//함수 프로토타입 //함수 프로토타입 //abstract 추상이라는 뜻
    //모든 클래스는 추상함수가 존재하면 반드시 그 앞에 abstract을 붙혀준다.
    //내부적으로 추상함수를 가지고 있다는 뜻.
    //abstract은 미완성이라는 뜻!**
    //미전제로하여 상속받을 수 있다
    void func2() {
        //추상클래스는 무조건 객체를 생성 시킬 수 없다.!! //무조건 상속 받아서 사용해야 함
        System.out.println("함수2번 콜");
    }
}
class Ornage extends Apple{
    void func1() {
        System.out.println("함수1번 콜");
    }
    void func3() {
        System.out.println("함수3번 콜");
    }
}
 
class Kiwi extends Apple{
    void func1() {
        System.out.println("함수1번 콜");
    }
    void func4() {
        System.out.println("함수4번 콜");
    }    
}
public class Hello {
    public static void main(String[] args) {
        Ornage o1=new Ornage();
        o1.func1();
        o1.func2();
        o1.func3();
        System.out.println();
        Kiwi k1 =new Kiwi();
        k1.func1();
        k1.func2();
        k1.func4();
    }
}
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package Pack01;
import java.util.LinkedList;
import java.util.Random;
import java.util.Scanner;
import java.util.concurrent.SynchronousQueue;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
 
abstract class Apple{
    abstract void func1();
    void func2() {
        System.out.println("2번");
    }
}
class Orange extends Apple{
    void func1() {
        System.out.println("1번");
    }
    void func3() {
        System.out.println("3번");
    }
}
 
public class Hello {
    public static void main(String[] args) {
        //1번 //상속받을 추상클래스를 직접 만들어서
        //자기꺼 있는지 확인하고 없으면 부모꺼 씀
        Orange o1 = new Orange();
        o1.func1();
        o1.func2();
        o1.func3();
 
        //2번 //다형성
        //업캐스팅 가능 //다형성이 가능
        //객체이름 a1
        //왼쪽이 부모 오른쪽이 자식!
        //자식것을 먼저 있는지 보고 없으면 자기꺼 씀
        System.out.println();
        Apple a1= new Orange();
        a1.func1();
        a1.func2();
 
        System.out.println();
        //Apple a2=new Apple();//당연히 오류뜸
        Apple a2 = new Apple() {
            //여기서 함수 1번을 구현
            void func1() {
                System.out.println("1번");
                //익명 클래스를 만드는 기법
            }
            void func3() {
                System.out.println("3번");
            }
        };
 
        //3번
        a2.func1();
        //a2.func3();//내부적(필드)로 사용할수 있지만 밖에선 사용 불가능!
        //a2는 익명의 자식일 뿐이라 외부에서 사용이 불가능
        //new Apple();//Apple타입으론 new가 안됨으로 오류
 
        //4번//익명객체
        new Apple() {
            void func1(){
                a2.func2();
            }
        }.func1();//익명객체라고 한다//즉석이라 딱 한번 사용하고 버린다
 
    }
}
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
39
40
41
42
43
44
45
46
47
48
49
50
package Pack01;
import java.util.LinkedList;
import java.util.Random;
import java.util.Scanner;
import java.util.concurrent.SynchronousQueue;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
abstract class Apple{
    abstract void func1();
}
class Dog{
    void func100(Apple apple){
        System.out.println("멍멍");
        apple.func1();
        System.out.println("냥냥");
    }
}
 
public class Hello {
    public static void main(String[] args) {
        Apple a1=new Apple() {
            @Override
            void func1() {
                System.out.println("호랑이");// TODO Auto-generated method stub
            }
        };
        a1.func1();//호랑이
        
    
        Apple a2=new Apple() {
            @Override
            void func1() {
                System.out.println("나비");// TODO Auto-generated method stub
            }
        };
        a2.func1();//나비
 
 
        //********************************************************
        //코드를 함수의 인수전달을 할려고 하는게 말이 안됐지만 익명 클래스를 사용하면서 됐다.
        System.out.println();
        Dog d1 =new Dog();
        d1.func100(a1);//멍멍 호랑이 냥냥
        d1.func100(a2);//멍멍 나비 냥냥
        //Dog d2 =new Dog();
        
    }
}
 
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
39
40
41
42
43
44
public class Hello{
    public static void main(String[] args) {
        Orange o1=new Orange();
        o1.func1();
        o1.func3();
        
        System.out.println();
        Apple a1=new Orange();
        a1.func1();
        a1.func3();
        
        new Apple() {
            @Override
            public void func1() {
                // TODO Auto-generated method stub
                System.out.println("앵무새");
            }
                
            @Override
            public void func3() {
                // TODO Auto-generated method stub
                System.out.println("카맬레온");
            }
        }.func3();//카멜레온
        
        
        System.out.println();        
        Kiwi k1 = new Kiwi();
        k1.show(new Apple() {
            
            @Override
            public void func3() {
                // TODO Auto-generated method stub
                System.out.println("원숭이");
            }
            
            @Override
            public void func1() {
                // TODO Auto-generated method stub
                System.out.println("코알라");
            }
        });
    }
}
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
package Pack01;
import java.util.LinkedList;
import java.util.Random;
import java.util.Scanner;
import java.util.concurrent.SynchronousQueue;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
 
class Apple{
 
}
public class Hello{
    public static void main(String[] args) {
        
        System.out.println("숫자를 입력 해주세오");
        
        Scanner s = new Scanner(System.in);
        System.out.println("호랑이");
        int n = new Scanner(System.in).nextInt();
        System.out.println("코끼리"+n);
        Scanner a = new Scanner(System.in);
        //실행후 숫자를 치면
        //코끼리+숫자
    }
}
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package Pack01;
import java.util.LinkedList;
import java.util.Random;
import java.util.Scanner;
import java.util.concurrent.SynchronousQueue;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
 
public class Hello{
    public static void main(String[] args) {
        
        Random rn=new Random();
        System.out.println(rn.nextInt());    
        System.out.println(rn.nextInt(100));
        
        for (int i = 0; i < 10; i++) {
            int n =rn.nextInt(3)+1;
            System.out.print(n+" ");
        }
    }
}
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
package Pack01;
import java.util.LinkedList;
import java.util.Random;
import java.util.Scanner;
import java.util.concurrent.SynchronousQueue;
import java.nio.channels.NetworkChannel;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
public class Hello {
    
    public static void main(String[] args) {
        Random rn = new Random();
        int n= rn.nextInt(6)+1;
        System.out.println("숫자를입력하세요");
        int input = new Scanner(System.in).nextInt();
        if(n==input) {
            System.out.println("숫자를 맞추었습니다.");
        }else {
            System.out.println(n+" "+input);
        }
        
    }
}
cs