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

static 기본3  (0) 2012.04.11
정적 메서드 정의하기  (0) 2012.04.11
static 기본  (0) 2012.04.11
정직 멤버변수와 인스턴스 멤버 변수의 차이점  (0) 2012.04.11
메소드 간단 예제  (0) 2012.04.11
public class StaticEx3 {
	
	public static void main(String[] args){
		StaticCount sc1 = new StaticCount();
		System.out.println("sc1의 c: "+ sc1.c + ", sc1의 count: " + StaticCount.count);
		StaticCount sc2 = new StaticCount();
		System.out.println("sc2의 c: "+ sc2.c + ", sc2의 count: " + StaticCount.count);
		StaticCount sc3 = new StaticCount();
		System.out.println("sc3의 c: "+ sc3.c + ", sc3의 count: " + StaticCount.count);
	}
}

sc1의 c: 1, sc1의 count: 1

sc2의 c: 1, sc2의 count: 2
sc3의 c: 1, sc3의 count: 3


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

예비  (0) 2012.04.11
정적 메서드 정의하기  (0) 2012.04.11
static 기본  (0) 2012.04.11
정직 멤버변수와 인스턴스 멤버 변수의 차이점  (0) 2012.04.11
메소드 간단 예제  (0) 2012.04.11
public class StaticCount {
	
	int c; //인스턴스 변수
	static int count; // 클래스(static)변수
						/*객체 생성과 무관
						호출에 의해 메모리에 올라가서 여러 객체에서 공유할 수 있음*/
	public StaticCount(){
		c++;
		count++;
	}
}

call 1
call 3
메인
call 2


class StaticTest001{//정적 메서드 정의하기
	private static int a=10;
	private int b=20;

	public static void SetA(int new_a){
		a = new_a;
	}
	public static int getA(){
		return a;
	}
}
public class StaticTest02 {
	public static void main(String[] args){
		//System.out.println(StaticTest.a);
		//a가 private으로 선언되어서 컴파일 에러 발생 (접근제한 때문에 호출불가)
		System.out.println(StaticTest001.getA());
		
		/*getA(),setA()가 static하기 때문에
		getA(),setA()만 호출할 경우 객체 생성하지 않고 호출가능
		StaticTest001 s1= new StaticTest001();
		StaticTest001 s2= new StaticTest001();*/

		StaticTest001.SetA(10000);
		int res1=StaticTest001.getA();
		
		System.out.println(res1);
		System.out.println(StaticTest001.getA());
	}
}

10

10000
10000


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

예비  (0) 2012.04.11
static 기본3  (0) 2012.04.11
static 기본  (0) 2012.04.11
정직 멤버변수와 인스턴스 멤버 변수의 차이점  (0) 2012.04.11
메소드 간단 예제  (0) 2012.04.11
public class StaticEx1 {
	
	int a; //인스턴스 변수
	static String s; //클래스(Static)변수 

	public static void main(String args){
		s = "자바의 꿈";
		//같은 클래스의 클래스 변수 호출시 클래스명 생략 ex)StaticEx1.s = 자바의꿈; 
		System.out.println("s : " + StaticEx1.s);

		//인스턴스 변수는 객체 생성 후 호출 가능
		//a = 1000;

		StaticEx1 st1 = new StaticEx1();
		st1.a = 1000;
	}
}
 
StaticTest.a->10
s1.a->10  s2.a->10
s1.b->10  s2.b->20
s1.a->100  s2.a->100

s1.b->20  s2.b->20


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

static 기본3  (0) 2012.04.11
정적 메서드 정의하기  (0) 2012.04.11
정직 멤버변수와 인스턴스 멤버 변수의 차이점  (0) 2012.04.11
메소드 간단 예제  (0) 2012.04.11
동물 만들기  (0) 2012.04.11
class StaticTest{//정직 멤버변수와 인스턴스 멤버 변수의 차이점
	static int a=10; //클래스(static)에 올라감
	int b=20; //heap에 올라감
}
public class StaticTest01 {
	public static void main(String[] args){
		System.out.println("StaticTest.a->"+StaticTest.a);
		StaticTest s1 = new StaticTest();
		StaticTest s2 = new StaticTest();
		
		System.out.println("s1.a->"+StaticTest.a+"\t s2.a->" + StaticTest.a);
		System.out.println("s1.b->"+StaticTest.a+"\t s2.b->" + s2.b);
		
		//정확한 호출 방법이 아님 StaticTest.a 로 호출해야됨
		
		StaticTest.a=100;
		System.out.print("s1.a->" + StaticTest.a);
		System.out.println("\t s2.a->"+StaticTest.a);
		
		s1.b=200;
		System.out.print("s1.b->" + s2.b);
		System.out.println("\t s2.b->"+s2.b);
	}

}

StaticTest.a->10

s1.a->10  s2.a->10
s1.b->10  s2.b->20
s1.a->100  s2.a->100
s1.b->20  s2.b->20


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

정적 메서드 정의하기  (0) 2012.04.11
static 기본  (0) 2012.04.11
메소드 간단 예제  (0) 2012.04.11
동물 만들기  (0) 2012.04.11
생성자 기본  (0) 2012.04.11
public class MethodTest004 {
	void prn(int ... num){ //int형 데이터를 출력하는 메서드의 정의
		for(int i=0; i<num.length; i++){//전달인자의 개수만큼 반복하면서
			System.out.print(num[i]+"\t"); //배열 형태로 출력한다.
		}
		System.out.println();
	}
	public static void main(String[] args){
		MethodTest004 mt = new MethodTest004();
	mt.prn(10,20,30); //개수에 상관없이 메서드를 호출할 수 있다.
	mt.prn(40,50);
	mt.prn(60);
	}
}

10 20 30

40 50
60


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

static 기본  (0) 2012.04.11
정직 멤버변수와 인스턴스 멤버 변수의 차이점  (0) 2012.04.11
동물 만들기  (0) 2012.04.11
생성자 기본  (0) 2012.04.11
생성자 내에 또다른 생성자를 호출  (0) 2012.04.11

동물 객체 만들기 Animal
멤버 필드 : 이름 나이 비행여부 boolean type -은닉화 
생성자
멤버 메소드(캡슐화) 

Animal Main
육상동물(포유류)
생성자 이용해서 데이터 셋팅

출력
이름
나이 (세)
비행여부 (불가능) 

조류 포함

class Ani{
	//멤버 필드 은닉화
	private String name;
	private int age;
	private boolean fly;
	//캡슐화
	public void setName(String n){
		name = n;
	}
	public void setAge(int a){
		age = a;
	}
	public void setFly(boolean f){
		fly = f;
	}
	//get name으로 값 가져오기
	public String getName(){
		return name; 
	}
	public int getAge(){
		return age; 
	}
	public boolean getFly(){
		return fly; 
	}
	//생성자
	public Ani(){}
	//멤버 메소드
	public void info(){
		System.out.println();
	}
}
//메인 메소드
public class AnimalMain{
	public static void main(String[] args){
		Ani a = new Ani();

		a.setName("하마");
		a.setAge(10);
		a.setFly(false);
		System.out.println("이름 : "+a.getName());
		System.out.println("나이 : "+a.getAge()+"세");
		if(a.getFly())
			System.out.println("비행 여부 : 가능");
		else
			System.out.println("비행 여부 : 불가능");
		System.out.println("==================");
		a.setName("참새");
		a.setAge(4);
		a.setFly(true);
		System.out.println("이름 : "+a.getName());
		System.out.println("나이 : "+a.getAge()+"세");
		if(a.getFly())
			System.out.println("비행 여부 : 가능");
		else
			System.out.println("비행 여부 : 불가능");

	}

}

이름 : 하마

나이 : 10세
비행 여부 : 불가능
==================
이름 : 참새
나이 : 4세
비행 여부 : 가능


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

정직 멤버변수와 인스턴스 멤버 변수의 차이점  (0) 2012.04.11
메소드 간단 예제  (0) 2012.04.11
생성자 기본  (0) 2012.04.11
생성자 내에 또다른 생성자를 호출  (0) 2012.04.11
this 레퍼런스  (0) 2012.04.11
public class ThisTest2 {
	
	int a;
	int b;
	
	public ThisTest2(int a,int b){
		//생성자 또는 메소드영역에서
		//멤버변수와 지역변수의 명칭이 같을때는
		//지역변수가 우선
		//this.a 는 위에있는 a이고 a는 int a이다
		//this는 멤버변수 호출이다
		this.a=a;
		this.b=b;
		//멤버변수 지역변수
		
		this.print();
	}
	public void print(){
		System.out.println(a + "," + b);
	}
	public static void main(String[] args){
		ThisTest2 t = new ThisTest2(4,5);

	}
}

4,5


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

메소드 간단 예제  (0) 2012.04.11
동물 만들기  (0) 2012.04.11
생성자 내에 또다른 생성자를 호출  (0) 2012.04.11
this 레퍼런스  (0) 2012.04.11
생성자 오버로딩  (0) 2012.04.11
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


+ Recent posts