danDevlog

Java - day7 본문

Java

Java - day7

단데기이 2022. 2. 23. 23:43
728x90

클래스 : 붕어빵 틀. 설계도

생성자 : 새로운 자료 타입의 변수 공간을 할당해 주는 역할.

예) int a=5;// 정수형 변수 a 에 5를 할당하라.

예) PhoneInfo pi = new PhoneInfo();

// 새롭게 생성한 PhoneInfo 자료형 변수 pi에 메모리 공간 확보하라.

예) PhoneInfo pi = new PhoneInfo("이순신","1111","02.02.23");

// 새로운 타입을 만들고 그 변수를 선언한 다음에 생성자를 통해서 공간을 확보하고 값을 할당한 모습.

 

객체 : 설계도를 이용하여 만들어진 실체, 붕어빵

객체 생성(메모리 공간 확보) : new 클래스명()

public class PhoneBook {
	String name;
	public static void main(String[] args) {
		PhoneBook pb = new PhoneBook();
		pb.setName("hong");
		System.out.println(pb.getName());
	}
	//메뉴 > 소스 > 제너레잇 겟터 앤 셋터
	public String getName() {
		return name;
	}
	public void setName(String name) {
		//name = name;// 수정전 필드 변수에 할당 되지 않음.
		//The assignment to variable name has no effect
		this.name = name;// this 키워드로 필드값 초기화, 혹은 매개변수명
		변경으로 구분
	}
}

public class PhoneBook {
   String name;

   public static void main(String[] args) {
      PhoneBook pb = new PhoneBook();
      pb.setName("hong");
      System.out.println(pb.getName());
   }

   // 메뉴 > 소스 > 제너레잇 겟터 앤 셋터
   public String getName() {
      return name;
   }

   public void setName(String name) {
//      name = name;// 수정전 필드 변수에 할당 되지 않음.
      // The assignment to variable name has no effect
      this.name = name;// this 키워드로 필드값 초기화, 혹은 매개변수명 변경으로 구분
   }
}
// Bus class
package test;

public class Bus {
	String num;
	int cnt = 0;
	int money;

	public String getNum() {
		return num;
	}
	public void setNum(String num) {
		this.num = num;
	}
	public int getCnt() {
		return cnt;
	}
	public void setCnt(int cnt) {
		this.cnt = cnt;
	}
	public int getMoney() {
		return money;
	}
	public void setMoney(int money) {
		this.money = money;
	}
	public void export(int money) {
		this.money += money;
	}
	public void cntPlus() {
		this.cnt++;
	}
}
// Subway class
package test;

public class Subway {
	String num;
	int cnt = 0;
	int money;

	public String getNum() {
		return num;
	}

	public void setNum(String num) {
		this.num = num;
	}

	public int getCnt() {
		return cnt;
	}

	public void setCnt(int cnt) {
		this.cnt = cnt;
	}

	public int getMoney() {
		return money;
	}

	public void setMoney(int money) {
		this.money = money;
	}
	public void export(int money) {
		this.money += money;
	}
	
	public void cntPlus() {
		this.cnt++;
	}

}
// Taxi class
package test;

public class Taxi {
	String num;
	int cnt = 0;
	int money;

	public String getNum() {
		return num;
	}
	public void setNum(String num) {
		this.num = num;
	}
	public int getCnt() {
		return cnt;
	}
	public void setCnt(int cnt) {
		this.cnt = cnt;
	}
	public int getMoney() {
		return money;
	}
	public void setMoney(int money) {
		this.money = money;
	}
	public void export(int money) {
		this.money += money;
	}
	public void cntPlus() {
		this.cnt++;
	}
}
// student class
package test;

public class Student {
	String name;
	int grade;
	int money;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getGrade() {
		return grade;
	}

	public void setGrade(int grade) {
		this.grade = grade;
	}

	public int getMoney() {
		return money;
	}

	public void setMoney(int money) {
		this.money = money;
	}

	// Object 객체의 시조.
	public void run(Object o) {
		// 지하철 인가 버스 인가?
		if (o instanceof Bus) {// 어느 타입인지 확인 instanceof
			// 받아온 매개변수가 버스 타입인지 확인?
			System.out.println("버스를 타고 갑니다.");
			((Bus) o).export(1000);
			this.money -= 1000;
			((Bus) o).cntPlus();
		} else if (o instanceof Subway) {
			System.out.println("지하철을 타고 갑니다.");
			((Subway) o).export(1500);
			this.money -= 1500;
			((Subway) o).cntPlus();
		} else if (o instanceof Taxi) {
			System.out.println("택시를 타고 갑니다.");
			((Taxi) o).export(5000);
			this.money -= 5000;
			((Taxi) o).cntPlus();
		} else {
			System.out.println("걸어서 갑니다.");
		}
	}

}
// Main class
package test;

public class Main {
	public static void main(String[] args) {
		Student s1 = new Student();
		Student s2 = new Student();
		s1.setName("hong");
		s1.setGrade(1);
		s1.setMoney(10000);		
		
		Bus b1 = new Bus();
		b1.setNum("3번");
		
		System.out.print(s1.getName() +"이 ");
		System.out.print(b1.getNum()+" ");
		s1.run(b1);
		
		Subway sw1=new Subway();
		sw1.setNum("2호선");
		
		System.out.print(s1.getName() +"이 ");
		System.out.print(sw1.getNum()+" ");
		s1.run(sw1);
		
		Taxi tx1 = new Taxi();
		tx1.setNum("모범");
		
		System.out.print(s1.getName() +"이 ");
		System.out.print(tx1.getNum()+" ");
		s1.run(tx1);
		
		int a=5;
		System.out.print(s1.getName() +"이 ");
		s1.run(5);
		
		System.out.println("학생의 잔액은 " + s1.getMoney());
		System.out.println("버스의 수입은 " + b1.getMoney());
		System.out.println("지하철의 수입은 " + sw1.getMoney());
		System.out.println("택시의 수입은 " + tx1.getMoney());
		System.out.println("버스의 승객은 " + b1.getCnt());
		System.out.println("지하철의 승객은 " + sw1.getCnt());
		System.out.println("택시의 승객은 " + tx1.getCnt());
	}
}
public class Main {
	public static void main(String[] args) {
		Student s1=new Student();
		System.out.println(s1.stuNum);
		//The static field Student.stuNum should be accessed in a static 
		way
		//스태틱 변수는 객체로 접근하지 않음.
		//Student s2=new Student();
		//System.out.println(Student.stuNum);
		//Student s3=new Student();
		//System.out.println(Student.stuNum);
		//Student s4=new Student();
		//System.out.println(Student.stuNum);
		//Student s5=new Student();
		//System.out.println(Student.stuNum);
		//1 2 3 4 5
		Student s2=new Student();
		System.out.println(s2.stuNum);
		Student s3=new Student();
		System.out.println(s3.stuNum);
	}
}
class Student {
	//static int stuNum; // 값이 공유됨.
	int stuNum;// 객체별로 새로 시작함.
	public Student() {
		++stuNum;
	}
}
//static은 필드 변수 사용 불가.
public class Main {
	int num=10;
	public static void main(String[] args) {
		Main m=new Main();
		m.num=100;
		//Cannot make a static reference to the non-static field num
		//static 이 붙으면, 객체 생성 이전에 메모리에 등록됨.
		//static 메소드에서 필드값 num을 사용하려면,
		//객체를 생성해서 접근하거나, num도 static 처리해야 함.
	}
}
//각 변수의 사용 범위.
//지역변수, 객체 변수, static 변수. 의 영역.
public class Main {
	int num=10;// 멤버 변수.
	static int number=100;// 객체 생성 이전에 있으므로 어디서든 편하게
	사용가능하지만,
	//공유라는 성격은 객체 지향에 반대 되므로 주의.
	public static void main(String[] args) {
		Main m=new Main();// 객체 변수.
		int a=20;// 지역변수.메소드 내에서 선언하고 메소드 사용이 끝나면 소멸.
		m.outPut2(20);// 일부러 다른 메소드로 전달한 경우.
		System.out.println(m.num);
		System.out.println(Main.number);
	}
	public void outPut() {
		//System.out.println(a);//a cannot be resolved to a variable
		//이런 변수 몰라요. // 메인 메소드에서 사용하고 사라지는 변수 이므로,
		System.out.println(Main.number);
	}
	public void outPut2(int num5) {
		System.out.println(num5);
		System.out.println(Main.number);
	}
}
//싱글톤
public class Main {
	public static void main(String[] args) {
		//싱글톤 : 객체의 공유.
		//날짜와 시간.
		//객체를 1개 생성하고,
		//객체 생성한 것이 있니? 없으면 생성. 있으면, 그 객체의 참조 주소를
		전달.
		//실제 예제를 참조할때 다시 언급 하겠습니다.
	}
}
//배열 사용.
public class Main {
	public static void main(String[] args) {
		int[] num=new int[] {1,2,3,4,5,6,7,8,9,10};
		//한줄에 정수형 변수 10개를 선언하고 할당한 모습.
		//배열명.length : 배열의 원소 갯수 리턴.
		for(int i=0;i<num.length;i++) {
			System.out.print(num[i]+" ");// 값의 접근을 위해서는
			배열명[index]
		}
	}
}

'Java' 카테고리의 다른 글

Java - day9  (0) 2022.02.28
Java - day8(전화번호부 3단계)  (1) 2022.02.24
Java - day6  (0) 2022.02.22
Java - day5  (0) 2022.02.21
Java - day4  (0) 2022.02.18
Comments