본문 바로가기
비트 장기/JAVA

7/17 배움(class, 생성자)

by woohyun22 2018. 7. 17.

함수의 모양은 4가지


함수 추가로 더 배웠음


String s2 = new String();//class 객체 생성할때랑 같다 String는 class

//생성자에서 인수전달을 받는게없다.

String s3 = new String("코끼리");//이것을 표준class라고 한다.



package practice;

class Tiger{//함수 = 메소드,

int a,b,c;

/* //생성자의 특징 1. 생성자의 정확한 명칭은 생성자 함수이다.

// 2. 생성자 함수의 call 호출 객체가 생성될떄(new) 단 한번 호출된다.자동호출

// 3. 생성자 함수이름은 반드시 class이름과 동일해야한다.

//  4. 생성자 함수는 return값을 가질 수 없습니다. = void를 적을수 없다.

//  5. 생성자 함수에 인수 전달은 할 수 있습니다.

// 6. 인수 전달이 필요하다면 객체를 생성할때 전달한다.

// 7. 생성자의 단 한가지의 목적은  field(변수)초기화 이다.

Tiger(){

System.out.println("생성자콜");

}

Tiger(int x){

System.out.println(x+"생성자");

}

Tiger(int x , int y,int z){

System.out.println(x+"생성자"+y+ " "+z);

}*/

Tiger(int x , int y,int z){

System.out.println(x+"생성자"+y+ " "+z);

a=x;

b=y;

c=z;//변수의 값을 초기화시킨다. 생성자.

//생성자가 변수를 초기화 하는데 제일 좋다.

}

void show(){//class내에서 먼저 찾고 다음에 생성자 함수 순

System.out.println(a+" "+b+" "+c);

}

}

public class practice {

public static void main(String[] args) {

System.out.println("호랑이");

Tiger t1 = new Tiger(100,200,5);//x에 전달됨

System.out.println("코끼리");

Tiger t2 = new Tiger(10,20,30);

t2.show();

Tiger t3 = new Tiger(150,80,30);//떡볶이에 빗댐

t3.show();

t2.show();//다른점주

for (int i = 0; i < 5; i++) {

t3.show();

}

}

}


함수이름을 동일하게 넣어서 쓸수있다.//함수는 오버로딩이 가능하다.


package practice;

class Tiger {

int a,b,c;

Tiger(){//함수는 오버로딩이 가능하다.

System.out.println("call");

}

void func01() {

System.out.println("인수전달없는함수");

}

void func01(int a) {//함수명이 같아도 안에 인수값이 추가되면 쓸수있다.

System.out.println("인수전달 한개있는함수");

}

void func01(int a,int b) {//함수명이 같아도 안에 인수값이 추가되면 반복해서쓸수있다.

System.out.println("인수전달 두개있는함수");

}

/*void func01(int b) {//함수명이 같아도 안에 인수값이 추가되면 쓸수있다.

//변수이름이 다르다고 해도 구분 불가 변수 

System.out.println("인수전달 한개있는함수");

}*/ //이렇게는 쓸수없다.

void func01(int a,int b,int c) {//함수명이 같아도 안에 인수값이 추가되면 반복해서쓸수있다.

System.out.println("인수전달 두개있는함수");

}

//함수 이름이 같지만 변수 갯수에 따라 더 사용할 수 있는것을 overloading이라고 함

//overloading = 이름이 동일한 함수를 만듬 단, 조건을 지킬때 오버로딩(함수재정의)

}

public class practice {

public static void main(String[] args) {

Tiger t1 = new Tiger();

t1.func01();

t1.func01(5);

t1.func01(4,5);

}

}


package practice;
class Tiger {
int a,b,c;
Tiger(){//함수는 오버로딩이 가능하다.
a = 10;
b = 20;
c = 30;
System.out.println("call");
}
Tiger(int x){//함수는 오버로딩이 가능하다.
a = x;
b = 20;
c = 30;
System.out.println("두번째call");
}
Tiger(int x,int y,int z){//함수는 오버로딩이 가능하다.
a = x;
b = y;
c = z;
System.out.println("세번째call");
}
void output() {//보여주기식은 show나 output로 쓰인다.display도
System.out.println(a+" "+b+" "+c);
}
}
public class practice {
public static void main(String[] args) {
Tiger t1 = new Tiger();
t1.output();
Tiger t2 = new Tiger(99);//생성자므로 여기서 받아줘야됨
t2.output();
Tiger t3 = new Tiger(1,2,3);
t3.output();
}
}


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
package practice;
class Tiger {
    int a,b,c;
    Tiger(){//함수는 오버로딩이 가능하다.
        System.out.println("call");
    }
    Tiger(int num){
 
        System.out.println(num);
    }
    Tiger(String str){
        System.out.println(str);
    }
    void show() {
        System.out.println(a+" "+b+" "+c);
    }
    void func01() {
        int a;//함수에 있는 a를 먼저쓰고 없다면 class의 a를 가져다 쓴다.
        a=1000;//함수가 끝날떄 선언한 a는 사라짐 
    }//여기서 사라짐a
    void func02() {
        a=2000;
    }
    void func03() {
        int a;
        this.a = 3000;//this는 내가 들어가 있는 class안의 변수에 넣음.
    }
    void func04(int a) {
        a = 4000;
    }
    void func05(int a){
        this.a=5000;//class a
    }
    void func06(int a) {
        this.a=a;
    }
    /*Tiger(int x,int y,int z){
        a=x;
        b=y;
        c=z;
    }*///클래스 안에서 변수 이름은 중복되지만
    Tiger(int a,int b,int c){//this쓰는게 훨씬 좋다.
        this.a = a;
        this.b = b;
        this.c = c;
    }
}
public class practice {
    public static void main(String[] args) {
        Tiger t1 = new Tiger();
        Tiger t2 = new Tiger(5000);
        Tiger t3 = new Tiger("호랑이");
        t3.show();
        t3.func01();//a 사라짐
        t3.show();
        t3.func02();
        t3.show();//this
        t3.func03();
        t3.show();
        t3.func04(99);
        t3.show();
        t3.func05(99);
        t3.show();
        t3.func06(99);
        t3.show();
        Tiger t4 = new Tiger(30,40,50);
        t4.show();
    }
}
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
package practice;
class Tiger {
    Tiger(){
        System.out.println("콜");
    }
    void func01(){
        System.out.println("호랑이");
    }
    void func02() {
        System.out.println("코끼리");
        this.func01();//같은 class안의 함수를 call할때는 t1.안해도됨.this붙여도 안붙여도 같음
        System.out.println("달팽이");
    }
    void func03(){//함수에서 자기자신을(함수)를 부르면 터진다.
        System.out.println("낙타");
        //func03();//재귀호출 = reculsive
    }
    void func04() {//이렇게 하면 지귀호출이됨
        System.out.println("안");
        func05();
    }
    void func05() {
        System.out.println("됨");
        func04();
    }
    private void func06() {//private를 사용하면 //데이터은닉
                        //멤버끼리는 사용가능하다. class에서 벗어나면 사용불가
        System.out.println("목감기를 치료합니다.");
    }
    void func07() {
        System.out.println("콧물을 치료합니다.");
    }
    void func08() {
        System.out.println("두통을 치료합니다.");
    }
    void func09() {
        System.out.println("종합감기약");
        func06();
        func07();
        func08();
    }//캡슐화- 종합적인 결과를 보여줌
}
public class practice {
    public static void main(String[] args) {
        Tiger t1 = new Tiger();
        t1.func01();
        t1.func02();
        t1.func03();
t1.func09();
    }
}
  cs

package practice;
class Tiger {
Tiger(){
System.out.println("콜");
}
void func01(){
System.out.println("호랑이");
}
void func02() {
System.out.println("코끼리");
this.func01();//같은 class안의 함수를 call할때는 t1.안해도됨.this붙여도 안붙여도 같음
System.out.println("달팽이");
}
void func03(){//함수에서 자기자신을(함수)를 부르면 터진다.
System.out.println("낙타");
//func03();//재귀호출 = reculsive
}
void func04() {//이렇게 하면 지귀호출이됨
System.out.println("안");
func05();
}
void func05() {
System.out.println("됨");
func04();
}
private void func06() {//private를 사용하면 //데이터은닉
//멤버끼리는 사용가능하다. class에서 벗어나면 사용불가
System.out.println("목감기를 치료합니다.");
}
void func07() {
System.out.println("콧물을 치료합니다.");
}
void func08() {
System.out.println("두통을 치료합니다.");
}
void func09() {
System.out.println("종합감기약");
func06();
func07();
func08();
}//캡슐화- 종합적인 결과를 보여줌
}
public class practice {
public static void main(String[] args) {
Tiger t1 = new Tiger();
t1.func01();
t1.func02();
t1.func03();
t1.func09();
String s1 = "호랑이";//간편하게 쓸때
String s2 = new String();//class 객체 생성할때랑 같다 String는 class
//생성자에서 인수전달을 받는게없다.
String s3 = new String("코끼리");//이것을 표준class라고 한다.
//생성자에서 인수전달 받는게 하나 있다.
String name = new String();
//new + ctrl + space
int[]ar = new int[7];
int[]br = {10,20,30,40};
for (int i = 0; i < ar.length; i++) {
System.out.print(ar[i]+" ");//배열은 가로로 찍기
}
System.out.println();
for (int i = 0; i < br.length; i++) {
System.out.print(br[i]+" ");
}
//foreach문 배열의 내용을 볼때는 foreach문을 쓰는게 편하다.
for (int i : ar) {
System.out.println(i);
}
for (int i : br) {
System.out.println(i);
}
}
}


package practice;
class Tiger {
Tiger(){
System.out.println("호랑이");
}
Tiger(int a){
this();//this 는 무조건 첫줄에 적어넣어야한다.
System.out.println("코끼리");
}
Tiger(int a,int b){
this(30);
System.out.println("앵무새");
}
}
public class practice {
public static void main(String[] args) {
Tiger t1 = new Tiger(10,20);
}
}





728x90

댓글