public class ThisConEx {//생성자 내에 또다른 생성자를 호출
	public ThisConEx(){
		/*this()는 생성자 내부에서 또 다른 생성자를 호출할때,
		생성자 내부에서 또다른 생성자를 호출할 때는
		생성자 최상단에 위치시켜야 함 (다른 수행문 보다 우선적으로 호출되어야함)
		System.out.println("ThisConEx() 호출");*/
		this("엄마");
	}
	public ThisConEx(char[] ch){
		this(String.valueOf(ch));//char[] -> String
	}					// 				- >"my♥SunAe"
	public ThisConEx(long lo){
		this(String.valueOf(lo)); //long -> String							  
        }                          //900000000L -> 900000000
	public ThisConEx(boolean b){
		this(String.valueOf(b)); //boolean -> String
								//true -> true
	}
	public ThisConEx(String str){
		System.out.println(str+"의 길이 : "+str.length());
	}
	public static void main(String[] args){
		char[] ch = {'m','y','♥','S','u','n','A','e'};
		long lo = 900000000L;
		boolean b = true;
		
		ThisConEx te1 = new ThisConEx();
		//엄마를 출력하는데 String 안에 들어가 의 길이 표시가됨
		ThisConEx te2 = new ThisConEx(lo);
		ThisConEx te3 = new ThisConEx(b);
		ThisConEx te4 = new ThisConEx(ch);
	}
	
}

엄마의 길이 : 2

900000000의 길이 : 9
true의 길이 : 4
my♥SunAe의 길이 : 8


'Java > Constructor (생성자)' 카테고리의 다른 글

동물 만들기  (0) 2012.04.11
생성자 기본  (0) 2012.04.11
this 레퍼런스  (0) 2012.04.11
생성자 오버로딩  (0) 2012.04.11
은닉화 생성자 오버로딩  (0) 2012.04.11
public class ThisTest {//레퍼런스 this(생성자)
	
	public ThisTest(){
		System.out.println("객체생성 : "+this);
		//참조 변수의 일종 this
	}
	public static void main(String[] args){
		ThisTest tt = new ThisTest();
		System.out.println("객체 생성후 : "+tt);
		//this는 객체 내부에서만 작동하기 때문에 따로 클래스를 만들어 객체화
	}
}

객체생성 : ThisTest@c05d3b

객체 생성후 : ThisTest@c05d3b


'Java > Constructor (생성자)' 카테고리의 다른 글

생성자 기본  (0) 2012.04.11
생성자 내에 또다른 생성자를 호출  (0) 2012.04.11
생성자 오버로딩  (0) 2012.04.11
은닉화 생성자 오버로딩  (0) 2012.04.11
생성자 정의하기  (0) 2012.04.11
class MyDate3{//생성자 오버로딩
	private int year;
	private int month;
	private int day;

	public MyDate3(){}
	//밑에 생성자를 만들었기 때문에 위에가 자동적으로 만들어지지 않음
	
	public MyDate3(int new_year, int new_month, int new_day){
		year=new_year;
		month=new_month;
		day=new_day;
	}
public void print(){
	System.out.println(year+ "/" +month+"/"+day);
        }
}
public class ConstructorTest05 {
	public static void main(String[] args){

		MyDate3 d= new MyDate3();
		d.print();
		
		MyDate3 d2=new MyDate3(2007,7,19);
		d2.print();
	}

}

0/0/0

2007/7/19


'Java > Constructor (생성자)' 카테고리의 다른 글

생성자 내에 또다른 생성자를 호출  (0) 2012.04.11
this 레퍼런스  (0) 2012.04.11
은닉화 생성자 오버로딩  (0) 2012.04.11
생성자 정의하기  (0) 2012.04.11
생성자 은닉화 캡슐화  (0) 2012.04.11
public class MyClass1 {//MyClass1Test이랑 연결
	//메인이 없기에 MyClass1Test랑 연결시킴
	//은익화
	private String name;
	//name = null
	//null = 객체에 주소가 없어 참조 못함
	//생성자(오버로딩으로 볼 수 있음)
	public MyClass1(){}
	//생성자
	public MyClass1(String n){
		name = n;
	}
	//캡슐화
	public void setName(String n){
		name=n;
	}
	public String getName(){
		return name;
	}
}


public class MyClass1Test {//MyClass1이랑 연결
	public static void main(String[] args){
		MyClass1 mc1 = new MyClass1();
		System.out.println(mc1.getName());
		mc1.setName("일꾼개미");
		System.out.println(mc1.getName());
		MyClass1 mc2 = new MyClass1("홍길동");
		System.out.println(mc2.getName());
	}
}


null

일꾼개미
홍길동


'Java > Constructor (생성자)' 카테고리의 다른 글

this 레퍼런스  (0) 2012.04.11
생성자 오버로딩  (0) 2012.04.11
생성자 정의하기  (0) 2012.04.11
생성자 은닉화 캡슐화  (0) 2012.04.11
참조 호출 Call by reference  (0) 2012.04.11
class MyDate2{//생성자 정의하기
	private int year;
	private int month;
	private int day;
	//없어도 됨 (자동으로됨)
	public MyDate2(){
		System.out.println("[생성자] : 객체가 생성될 때 자동 호출됩니다.");
		year=2011;
		month=12;
		day=16;
	}
public void print(){
	System.out.println(year + "/" + month + "/" +day);
 }
}
public class ConstructorTest02 {
	public static void main(String[] args){
		MyDate2 d = new MyDate2();
		d.print();
	}

}

[생성자] : 객체가 생성될 때 자동 호출됩니다.

2011/12/16


'Java > Constructor (생성자)' 카테고리의 다른 글

생성자 오버로딩  (0) 2012.04.11
은닉화 생성자 오버로딩  (0) 2012.04.11
생성자 은닉화 캡슐화  (0) 2012.04.11
참조 호출 Call by reference  (0) 2012.04.11
생성자 정의와 호출  (0) 2012.04.11
class Bank{//은닉화 캡슐화
	
	//은닉화 (금고)
	private int money;
	private int card;
	
	//캡슐화 어디서든 호출가능하게 하려고 public (은행원)
	public void setMoney(int m){//데이터를 set하는 함수 set
		money = m;
	}
	public void setCard(int c){
		card = c;
	}
	public int getMoney(){//데이터를 리턴하는 함수get
		return money; //setMoney의money를 가져옴
	}
	public int getCard(){
		return card;
	}
	
}
public class VariableTest2 {
	public static void main(String[] args){
		Bank b = new Bank();
		/*private 접근 제한 때문에 호출 불가
		System.out.println(b.money);
		System.out.println(b.card);*/
		
		//데이터 저장
		b.setMoney(1000);
		b.setCard(2000);
		System.out.println(b.getMoney());
		System.out.println(b.getCard());
	}
}

1000

2000


'Java > Constructor (생성자)' 카테고리의 다른 글

은닉화 생성자 오버로딩  (0) 2012.04.11
생성자 정의하기  (0) 2012.04.11
참조 호출 Call by reference  (0) 2012.04.11
생성자 정의와 호출  (0) 2012.04.11
인자 전달 방식 참조 호출 Call by reference  (0) 2012.04.11
class MyDate{//참조 호출 call by reference
	int year=2006;
	int month=4;
	int day=1;
}
class RefMethod{
	void changeDate(MyDate t){
		t.year=2007; t.month=7; t.day=19;
	}
}
public class MethodTest09 {
	public static void main(String[] args){
		RefMethod rm = new RefMethod();
		MyDate d=new MyDate();
		//각 각 클래스 메모리에 올리기
		System.out.println("함수 호출전 d-> "+d.year+"/" +d.month+ "/" +d.day);
		rm.changeDate(d);
		//주소를 MyDate t로 넘기기
		//t는 MyDate클래스의 안에 객체로 넘어감
		//int대신 MyDate가 오면 참조자료형이 오면은 값이 아닌 주소가 오게됨
		System.out.println("함수 호출전 d-> "+d.year+"/" +d.month+ "/" +d.day);
	}
}

함수 호출전 d-> 2006/4/1

함수 호출전 d-> 2007/7/19


class Variable{//생성자 정의와 호출
	private int c = 300;
	int d = 400;
}

public class VariableTest {
	//멤버 변수
	//private 는 같은 클래스 영역에서는 출력가능
	private int a = 100;
	private int b = 200;


	public static void main(String[] args){
		VariableTest v = new VariableTest();
		System.out.println(v.a);
		System.out.println(v.b);
		System.out.println("==================");
		Variable v2 = new Variable();
		/*
		System.out.println(v2.c);
		같은 클래스의 영역이 아니기 때문에 호출이 안됨
		private 접근 제한으로 호출 불가
		*/
		System.out.println(v2.d);
	}
}

100

200
==================
400


public class ReferenceParameter {// 참조 호출 Call by reference
	// 멤버 메소드
	// 메소드 호출방식 : 주소를 전달해서 메소드를 호출
	// call by reference
	public void increase(int[] n) {
		for (int i = 0; i < n.length; i++)
			n[i]++;
	}

	// 메인 메소드
	public static void main(String[] args) {
		// 배열 생성
		int[] ref1 = { 100, 800, 1000 };

		System.out.println("ref1[0] : " + ref1[0]);
		System.out.println("ref1[1] : " + ref1[1]);
		System.out.println("ref1[2] : " + ref1[2]);
		System.out.println("===================");
		ReferenceParameter rp = new ReferenceParameter();
		rp.increase(ref1);

		for (int i = 0; i < ref1.length; i++)
			System.out.println("ref1[" + i + "] : " + ref1[i]);
	}
}

ref1[0] : 100

ref1[1] : 800
ref1[2] : 1000
===================
ref1[0] : 101
ref1[1] : 801
ref1[2] : 1001


class ValueMethod{//값에 의한 호출 방식
	//y 랑 x는 상관이 없다
	void changeInt(int y){
		y=10; //전달된 데이터 7 -> 10
		System.out.println("y = "+y);
	}
}
public class MethodTest08 {
	public static void main(String[] args){
		//changeint 메서드를 호출하기 위해서 ValueMethod 객체 생성
		ValueMethod vm = new ValueMethod();
		int x=7;
		System.out.println("함수 호출 전 x-> " +x);
		//vm으로 ValueMethod 클래스의 changeint 메서드를 호출한다
		vm.changeInt(x);
		System.out.println("함수 호출 후 x-> " +x);
	}

}

함수 호출 전 x-> 7

y = 10
함수 호출 후 x-> 7


public class ValueParameter {// 인자 전달방식 값호출(call by value
	// 멤버 메소드
	// 메소드 호출 방식 : 값을 전달해서 메소드 호출(Call by Value)
	public int increase(int n) {
		++n;
		return n;
	}

	// 메인 메소드
	public static void main(String[] args) {
		int var1 = 100;
		// 객체 생성
		ValueParameter vp = new ValueParameter();
		int var2 = vp.increase(var1);
		//var1 으로 했기에 int n이 100이 되면서
		//증감식으로 101이 됨(var2가)
		System.out.println("var1 : " + var1 + ", var2 : " + var2);
	}
}

var1 : 100, var2 : 101



public class MethodTest04 {//타입의 위치만 바꿔서 메서드 오버로딩
	public void make(int a, double b){
		System.out.println("int 형 데이터 : "+ a);
		System.out.println("double 형 데이터 : "+ b);
	}
	public void make(double b, int a){
		System.out.println("int 형 데이터 : "+ a);
		System.out.println("double 형 데이터 : "+ b);

	}
	public static void main (String[] args){
		MethodTest04 mt = new MethodTest04();
		mt.make(50,3.14d);
		System.out.println("=================");//구분선
		mt.make(6.78d,100);
	}
}

int 형 데이터 : 50

double 형 데이터 : 3.14
=================
int 형 데이터 : 100
double 형 데이터 : 6.78


'Java > Overloading' 카테고리의 다른 글

예비  (0) 2012.04.11
전달인자의 개수가 다른 메서드 오버로딩  (0) 2012.04.11
전달인자의 자료형이 다른 메서드 오버로딩  (0) 2012.04.11
메소드 오버로딩2  (0) 2012.04.11
메소드 오버로딩  (0) 2012.04.11
public class MethodTest03 {//전달인자의 개수가 다른 메서드 오버로딩
	//정수형 데이터 3개를 형식 매개변수로 갖는 prn 메서드 정의
	void prn(int a, int b, int c){
		System.out.println(a + "\t" + b +"\t"+ c);
	}
	//정수형 데이터2개를 형식 매개변수로 갖는 prn 메서드 정의
	void prn(int a, int b){
		System.out.println(a + "\t" + b);
	}
	//정수형 데이터 1개를 형식 매개변수로 갖는 prn 메서드 정의
	void prn(int a){
		System.out.println(a);
	}
	public static void main(String[] args){
		MethodTest03 mt = new MethodTest03();
		mt.prn(10,20,30); //정수형 데이터 3개를 실매개변수로 지정
		mt.prn(40,50); 	//정수형 데이터 2개를 실매개변수로 지정
		mt.prn(60); 	//정수형 데이터 1개를 실매개변수로 지정

	}
}

10 20 30

40 50
60


오버로딩 규칙
1.이름이같아야한다.
2.전달되는 인자의 타입,갯수,순서 에따라 구분된다.

'Java > Overloading' 카테고리의 다른 글

예비  (0) 2012.04.11
타입의 위치만 바꿔서 메서드 오버로딩  (0) 2012.04.11
전달인자의 자료형이 다른 메서드 오버로딩  (0) 2012.04.11
메소드 오버로딩2  (0) 2012.04.11
메소드 오버로딩  (0) 2012.04.11
public class MethodTest02 {//전달인자의 자료형이 다른 메서드 오버로딩
	//int 형 데이터에 대해서 절대값을 구하는 메서드 정의
	int abs(int num){
		if(num<0)
			num=-num;
		return num;
	}
	//long 형 데이터에 대해서 절대값을 구하는 메서드 정의
	long abs(long num){
		if(num<0)
			num=-num;
		return num;
	}
	//double 형 데이터에 대해서 절대값을 구하는 메서드 정의
	double abs(double num){
		if(num<0)
			num=-num; //음수일 경우 양수로
		return num;
	}
	
	//전달되는 타입만 다르고 로직은 모두 같다
	public static void main(String[] args){
		MethodTest02 mt = new MethodTest02();
		
	//전달인자가 int형이므로03:의 int형 데이터에 대해서 절대값을 구하는 메서드 호출
	int var01=-10, var02;
	//같으므로 int로 찾아 간다
	var02=mt.abs(var01);
	System.out.println(var01 + "의 절대값은 . -> "+var02);
	
	//전달인자가 long형이므로09:의 long형 데이터에 대해서 절대값을 구하는 메서드 호출
	long var03=-20L, var04;
	var04=mt.abs(var03);
	System.out.println(var01 + "의 절대값은 . -> "+var04);
	
	//전달인자가 double형이므로15:의 double형 데이터에 대해서 절대값을 구하는 메서드 호출
	double var05=-3.4, var06;
	var06=mt.abs(var05);
	System.out.println(var05 + "의 절대값은 . -> "+var06);
	}
}

-10의 절대값은 . -> 10

-10의 절대값은 . -> 20
-3.4의 절대값은 . -> 3.4


'Java > Overloading' 카테고리의 다른 글

예비  (0) 2012.04.11
타입의 위치만 바꿔서 메서드 오버로딩  (0) 2012.04.11
전달인자의 개수가 다른 메서드 오버로딩  (0) 2012.04.11
메소드 오버로딩2  (0) 2012.04.11
메소드 오버로딩  (0) 2012.04.11

+ Recent posts