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 | /*---------------------------------------------*/ // 생성자가 없으면 컴파일러가 직접 생성자를 만든다. // 생성자가 없어도 함수 1번이 콜 된다. // 디폴트 생성자 // 생성자는 무조건 하나 만드는 것이 좋다. package PACK01; import java.util.Random; import java.util.Scanner; class Tiger{ int a, b, c; // 생성자 삭제 void func01() { System.out.println("함수 1번 콜"); } } public class Hello { public static void main(String[] args) { Tiger a = new Tiger(); a.func01(); } } | 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 | package PACK01; import java.util.Random; import java.util.Scanner; class Tiger{ int a, b, c; Tiger(){ } // 인수 없음 Tiger(int num){ } // 인수 전달 void func01() { System.out.println("함수 1번 콜"); } } public class Hello { public static void main(String[] args) { Tiger t1 = new Tiger(); // 인수 없음 Tiger t2 = new Tiger(50); // 인수 필요 t1.func01(); } } | 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 | package PACK01; import java.util.Random; import java.util.Scanner; class Tiger{ int a, b, c; Tiger(){ } // 인수 없음 Tiger(int num){ } // 인수 전달 void func01() { System.out.println("함수 1번 콜"); } } public class Hello { public static void main(String[] args) { Tiger t1 = new Tiger(); // 인수 없음 Tiger t2 = new Tiger(50); // 인수 필요 t1.func01(); } } | 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 | package pack01;//https://colorscripter.com/ class Animal{ int a,b,c; Animal(){//부모//super은 반드시 첫줄에 나와야한다. super(); System.out.println("부모 생성자콜"); } Animal(int a){ System.out.println("부모 생성자 콜"+a); } Animal(int a, int b){ System.out.println("부모 생성자 콜"+a+" "+b); } } class Tiger extends Animal{//자식 extends 상속 int a,b,c; Tiger(){ super(100); System.out.println("자식 생성자 콜"); } Tiger(int a){ //super생략 super(300,400); System.out.println("자식 생서자 콜"+a); } } public class Hello { public static void main(String[] args) { Tiger t1 = new Tiger(200); } } | 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 | package pack01; //final class Animal{//final class는 상속불가 int a,b,c; Animal(){ System.out.println("Animal call"); } void func01() { System.out.println("부모함수 1번콜"); func02(); func03(); } void func02() { System.out.println("부모함수 2번콜"); } void func03() { System.out.println("부모함수 3번콜"); } } class Tiger extends Animal{ int a,b,c; Tiger(){ System.out.println("Tiger call"); } void func02() {//같은 모양의 함수를 넣으면 부모의 코드가 희미해져 사용x //자식 때문에 부모 함수가 가려졌다.overriding = 상속이 나와야됨 System.out.println("자식함수 2번콜"); } void func03() { super.func03(); //System.out.println("자식함수 3번콜"); } } public class Hello { public static void main(String[] args) { Tiger t1 = new Tiger(); t1.func01(); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | package pack01; class A{//이중상속~ } class B extends A{ } class C extends A{ } class D extends C{ } class E extends D{ } public class Hello { public static void main(String[] args) { } } | 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 | package pack01; class Fruit{//다형성 void eat() { System.out.println("먹습니다"); } void make() { System.out.println("과일을 만듭니다."); } void show() { System.out.println("사과를 보여줍니다."); } void sell() { System.out.println("사과를 팝니다."); } } class Apple extends Fruit{ void eat() { System.out.println("사과를 먹습니다."); } void sell() { System.out.println("사과를 팝니다."); } } class Banana extends Fruit{ void eat() { System.out.println("바나나를 먹습니다."); } void sell() { System.out.println("바나나를 팝니다."); } } class Orange extends Fruit{ void eat() { System.out.println("오렌지를 먹습니다."); } void sell() { System.out.println("오렌지를 팝니다."); } } class Kiwi extends Fruit{ void eat() { System.out.println("키위를 먹습니다."); } void sell() { System.out.println("키위를 팝니다."); } } class Store{//이 부분이 다형성을 쓰는 이유 여러번 안써도 하나로 다 받아먹을수있다. /*void sell(Apple a) { a.eat(); } void sell(Banana a) { a.eat(); } void sell(Orange a) { a.eat(); }*/ void sell(Fruit a) { a.sell(); } } public class Hello { public static void main(String[] args) { Apple a1 = new Apple(); Banana b1 = new Banana(); Orange o1 = new Orange(); Fruit f1 = new Apple();//왼쪽 부모 오른쪽 자식 Fruit f2 = new Banana(); Store s1 = new Store(); /*a1.eat(); b1.eat(); o1.eat(); f1.eat();//a1.eat()와 결과가 같다. a1.make();*/ //f1.show();//overriding 된것만 쓸수있다. or자식꺼 s1.sell(a1); s1.sell(b1); s1.sell(o1);//함수를 추가할 필요가없다. s1.sell(new Apple()); s1.sell(new Banana()); s1.sell(new Orange()); s1.sell(new Kiwi()); } } | 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 | package pack01; class Animal{ void cry() { System.out.println("전 소리를 못내요"); } } class Dog extends Animal{ void cry() { System.out.println("멍멍"); } } class Cat extends Animal{ void cry() { System.out.println("야옹"); } } class Snake extends Animal{ } class Tiger extends Animal{ void cry() { System.out.println("어흥"); } } class Rabbit extends Animal{ } class Zoo{ void cry(Animal a) { a.cry(); } } public class Hello { public static void main(String[] args) { Zoo z = new Zoo(); z.cry(new Dog());//받는놈은 부모 주는놈은 자식 z.cry(new Cat()); z.cry(new Snake()); z.cry(new Tiger()); z.cry(new Rabbit()); } } |
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 | package pack01; class Tiger{ void func01() { System.out.println("함수1번 call"); } } public class Hello { public static void main(String[] args) { int[]ar = new int[3]; ar[0] =10; ar[1] =20; ar[2] =30; for (int i : ar) {//foreach문 System.out.println(i); } Tiger t1 = new Tiger(); Tiger[] t2 = new Tiger[3]; t2[0]= new Tiger();//이런식으로 배열만들어줘야 쓸수있다. t2[1]= new Tiger(); t2[2]= new Tiger(); t2[0].func01(); t2[1].func01(); t2[2].func01(); for (int i = 0; i < t2.length; i++) { t2[i].func01(); } } } | cs |
728x90
'비트 장기 > JAVA' 카테고리의 다른 글
7/21 배움 (추상class, ) (0) | 2018.07.21 |
---|---|
7/20 복습 (0) | 2018.07.20 |
7/18 복습 (0) | 2018.07.19 |
7/18 배움(함수,overloading, 생성자 class, chaining, final, static) (0) | 2018.07.18 |
7/17 복습(생성자 오버로딩) (0) | 2018.07.18 |
댓글