함수의 모양은 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();}}
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 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는 사라짐}//여기서 사라짐avoid 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();//thist3.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
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 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 + spaceint[]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);}}
'비트 장기 > JAVA' 카테고리의 다른 글
7/18 배움(함수,overloading, 생성자 class, chaining, final, static) (0) | 2018.07.18 |
---|---|
7/17 복습(생성자 오버로딩) (0) | 2018.07.18 |
7/16 복습 (0) | 2018.07.17 |
7/16 수업(class 복습, 예제) (0) | 2018.07.16 |
7/15까지 문제 한번 풀어보기 (0) | 2018.07.16 |
댓글