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 func01();//함수원형, 함수 프로토타입//모든 함수는 추상함수가 존재하면 반드시 그 클래스 앞에 abstract를 붙여줘야 된다.//추상 클래스는 코드가 미완성이라 객체 생성 불가//자체적으로는 쓸 수 없고 무조건 상속을 받아서 써야되는 강요클래스이다.//추상함수를 상속받은 자식 클래스는 무조건 추상함수를 완성시켜줘야된다.void func02() {System.out.println("함수2번콜");}}class Orange extends Apple{//{} ()void func01() {System.out.println("함수1번콜");}void func03() {System.out.println("함수3번콜");}}class Kiwi extends Apple{void func01() {//함수1번을 구현해주면 추상함수를 상속받은 Kiwi클래스의 오류가 사라진다.}void func04() {System.out.println("함수4번콜");}}public class Hello {public static void main(String[] args) {Orange o1 = new Orange();o1.func01();o1.func02();o1.func03();Kiwi k1 = new Kiwi();k1.func04();}}//abstract핸드폰 클래스 밧데리 함수//상속받은함수는 밧데리 함수를 완성시켜라//받은애가 책임지고 밧데리를 만들어야된다.
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 72 73 74 75 76 77 78 79 80 81 | 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 func01(); void func02() { System.out.println("함수2"); } } class Orange extends Apple{ void func01() { //얘를 만들어줘야 추상클래스를 상속받은 orange클래스의 오류가 풀린다! System.out.println("함수1"); } void func03() { System.out.println("함수3"); } } public class Hello { public static void main(String[] args) { //1번째 추상클래스 상속을 직접 만들어서 쓴다. Orange o1 = new Orange(); o1.func01(); o1.func02(); o1.func03(); //업캐스팅 가능 - 애플타입으로는 객체생성이 불가하다. /다형성프로그램을 만들 수 있다. //2번째 다형성 사용 Apple a1 = new Orange(); //문법 = 메모리(가지고있지만 사용은 할 수 없다.) a1.func01(); a1.func02(); //집중 //Apple a2 = new Apple();//추상함수를 들고있는 추상클래스라서 객체생성불가. //3번째 익명 클래스 Apple a2 = new Apple() { void func01() { //익명클래스를 만들었다. //클래스를 위에 만들지않았다는것 System.out.println("1번"); } void func03() { System.out.println("3번"); } }; a2.func01(); //a2.func03();//필드 내부에서는 사용가능하나 밖에서는 사용불가하다. //오버라이딩으로 애플타입으로에서 만들어진 것이니까 부모문법밖에 쓸수 없다. 익명클래스는 자식꺼라 쓸 수 없다. //4번째 익명 객체 new Apple() {//애플타입으로는 new를 할 수 없어서 오류가 뜬 것이다. void func01() { //넣어주면 사용가능하다. } }.func01();//익명 객체 //객체가 없으므로 한번만 쓰고 버리는 것이다. } } //예시 //abstract핸드폰 클래스 밧데리 함수 //상속받은함수는 밧데리 함수를 완성시켜라 //받은애가 책임지고 밧데리를 만들어야된다. //가변적이다 함수의 인수 전달을 코드를 보내려는 것 //익명클래스로 인해 코드전달이 가능해졌다. 임의의 코드를 | cs |
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 func01(); } class Dog{//코드 전달 하는것을 AOP 관점지향프로그램이라고 한다. void func100(Apple apple){ System.out.println("멍멍");//코드와 코드사이에 가변적으로 활용 apple.func01(); System.out.println("냠냠"); } } public class Hello { public static void main(String[] args) { Apple a1 = new Apple() { @Override void func01() { // TODO Auto-generated method stub System.out.println("호랑이"); } }; a1.func01(); Apple a2 = new Apple() { @Override void func01() { // TODO Auto-generated method stub System.out.println("코끼리"); } }; a2.func01(); System.out.println(); Dog d1 = new Dog(); d1.func100(a1); d1.func100(a2); } } | 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 | 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; abstract class Apple{ abstract void func01(); } class Dog{//코드 전달 하는것을 AOP 관점지향프로그램이라고 한다. void func100(Apple apple){ System.out.println("멍멍");//코드와 코드사이에 가변적으로 활용 apple.func01(); System.out.println("냠냠"); } } public class Hello { int a=0; String b = "독수리"; String c = new String("달팽이"); Apple d = new Apple() { void func01() { //이 형식으로 쓸 수 있다. //익명클래스 생성으로 객체생성한 방법이다. } }; public static void main(String[] args) { Apple a1 = new Apple() { @Override void func01() { // TODO Auto-generated method stub System.out.println("호랑이"); } }; a1.func01(); Apple a2 = new Apple() { @Override void func01() { // TODO Auto-generated method stub System.out.println("코끼리"); } }; a2.func01(); System.out.println(); Dog d1 = new Dog(); d1.func100(a1); d1.func100(a2); d1.func100(new Apple() {//인수로 객체를 바로 던지는데 오버라이드 @Override void func01() { // 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 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 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | 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; interface Apple{//추상함수밖에 없을때는 추상클래스라고 하지않고 인터페이스라고 한다. //인터페이스를 누르면 스킬 발동 //abstract void func01(); void func01();//생략할 수 있다. 추상함수밖에 없다고 생각 //코드 구현이 없을때를 강조 /*void func02() { }*/ void func03(); } class Orange implements Apple {//interface일때는 implements(구현) 코드를 구현하세요~ public void func01() { System.out.println("호랑이"); }; public void func03() { System.out.println("코끼리"); }; } class Kiwi{ void show(Apple apple) { apple.func01(); } } public class Hello { public static void main(String[] args) { Orange o1 = new Orange(); o1.func01(); o1.func03(); Apple a1 = new Orange(); a1.func01(); a1.func03(); System.out.println(); Apple a2 = new Apple() { @Override public void func01() { // TODO Auto-generated method stub System.out.println("앵무새"); } @Override public void func03() { // TODO Auto-generated method stub System.out.println("고양이"); } }; a2.func01(); a2.func03(); System.out.println(); new Apple() { @Override public void func01() { // TODO Auto-generated method stub System.out.println("강아지"); } @Override public void func03() { // TODO Auto-generated method stub System.out.println("사자"); } }.func01(); Kiwi k1 = new Kiwi(); k1.show(a1); k1.show(a2); k1.show(new Apple(){//Apple의 추상함수를 둘다 완성시켜줘야된다. @Override public void func01() { // TODO Auto-generated method stub System.out.println("고양이"); } @Override public void func03() { // TODO Auto-generated method stub System.out.println("고양이1"); } }); } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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; class Apple{ } public class Hello { public static void main(String[] args) { //Scanner s = new Scanner(System.in);//숫자입력받는 방법 System.out.println("숫자를 입력하세요"); int n = new Scanner(System.in).nextInt();//블로킹상황 멈춰있는 //하나 해놓고 변수로 쓴다. System.out.println(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(); System.out.println(rn.nextInt());//+-20억 System.out.println(rn.nextInt(100));//0~100까지 for (int i = 0; i < 10; i++) { int n = rn.nextInt(3); 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 25 | 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 |
728x90
댓글