티스토리 뷰

back/Java

KH 11일차

devel0per 2022. 7. 14. 15:15

11일차인 오늘은 접근 지정자(Access Modifier),클래스,메소드에 대해서 집중 학습했다.

(1) 클래스

 

package ja_0714;

class Car{
	
	//filed
	int door;
	String color; 
	String gearType;
	String direction;
	
	
	public Car() { //default 생성자 
	}
	
	public Car(String c,String g,int d,String dd) { //매개변수가 있는 생성자
		color = c;
		gearType = g;
		door = d;
		direction = dd;
	}
	
	
	
	public String toString() {
		return "color : " + color + ", gearType : " +gearType + " door : " + door + " direction : " + direction ;
	}
}

public class CarTest_1 {
	public static void main(String[] args) {
		
		
		Car car1 = new Car(); // default 생성자로 간다.
		
		car1.color = "green";
		car1.gearType = "no auto";
		car1.door = 5;
		car1.direction = "left";
		
		Car car2 = new Car("red", "fullauto", 3,"right"); //매개변수가 있는 생성자로 간다.
		
		Car car3 = new Car();
		
		car3.color = "black";
		car3.gearType = "auto";
		car3.door = 2;
		car3.direction = "straight";
		
		
		System.out.println(car1.toString()); // toString이 없다면 주소값을 출력함. ja_0714.Car@6bf2d08e  - - 객체가 같으면 주소값이 같다.
		System.out.println(car2.toString());
		System.out.println(car3.toString());
		System.out.println();
		System.out.println(car1);
		System.out.println(car2);
		System.out.println(car3);
		
		System.out.println();
		System.out.println();
		System.out.println("=======================================================");
		System.out.println();
		System.out.println();
			
		
		//car1
		if(car1.direction == "left") { 
			System.out.println("This car1 is going to left");
		}
		else if(car1.direction.equals("right")) {
			System.out.println("This car1 is going to right");
		}
		else {
			System.out.println("This car1 is going to Straight");
		}
		
		
		//car2
		if(car2.direction.equals("left")) {
			System.out.println("This car2 is going to left");
		}
		else if(car2.direction.equals("right")) {
			System.out.println("This car2 is going to right");
		}
		else {
			System.out.println("This car2 is going to Straight");
		}
		
		
		//car3
		if(car3.direction.equals("left")) {
			System.out.println("This car3 is going to left");
		}
		else if(car3.direction.equals("right")) {
			System.out.println("This car3 is going to right");
		}
		else {
			System.out.println("This car3 is going to Straight");
		}		
	}

}

(1-1) 은닉화

 

@ 멤버변수를 public으로 주고 main 메소드에서 값 변경가능.

package ja_0714;

class P{
	
	public int a = 1;
	public int b = 6;
	
	public P() {
		
	}
	
	
	
	public int add() {
		return a+b;
	}
}



public class Prc_1 {
	public static void main(String[] args) {	
		
		P minwoo = new P();
		
		minwoo.a = 3;
		minwoo.b = 7;
		
		
		System.out.println(minwoo.add());
	}
}

 

@ 멤버변수 private 설정 오직 멤버 메소드로만 컨트롤이 가능하게끔 은닉화 한다.

 

package ja_0714;


class A_1{
	// 멤버 변수
	private int x = 10;
	private int y = 30;
	
	public A_1() { // 생성자
	}
	
	public int add() { // 멤버 메소드는 public으로 주고 변수는 private를 줘서 직접 멤버변수를 건들 수 없게 하는것이 완벽한 은닉화다.
		return (x + y);
	}
}

public class Test_B {
	public static void main(String[] args) {
		
		A_1 obj = new A_1();
//		obj.x = 55;
//		obj.y = 77;
		
//		System.out.println("x = " + obj.x);
//		System.out.println("y = " + obj.y);
		System.out.println("x + y = " + obj.add()); // 메소드를 통해서만 허용하도록 한다.

		
	}
}

@ 인스턴스 복사를 위한 생성자를 생성하면

Car_2 obj_2 = new Car_2(obj_1); 처럼 인스턴스 복사가 가능하다.

 

 

@ 이렇게 복사하면 같은 heap 공간을 바라보고 있기 때문에 obj_2를 수정하면 obj_1도 수정됨.

Car_2 obj_2 = obj_1; 

 

@ new를 사용하면 heap 기억장소에 저장되기 때문에 해쉬 함수값이 다르다.

Car_2 obj_2 = new Car_2();

Car_2 obj_2 = new Car_2(obj_1);

 

package ja_0714;

class Car_2{
	//멤버 변수
	String color;
	String gearType;
	int door;
		
	public Car_2() { //default 생성자
		
		this("white","auto",4);
	}
	
	public Car_2(Car_2 car) { // 인스턴스 복사를 위한 생성자 
		
		color = car.color;
		gearType = car.gearType;
		door = car.door;
		
	}
	
	public Car_2(String c, String g, int d) {
		color = c;
		gearType = g;
		door = d;
	}
}


public class CarTest_2 {
	public static void main(String[] args) {
		
		Car_2 obj_1 = new Car_2();
		
//	Car_2 obj_2 = obj_1; // 같은 heap 공간을 바라보고 있기 때문에 해쉬주소값이 같다.
	Car_2 obj_2 = new Car_2(); //obj_1의 복사본 obj_2 // new를 썼기 때문에 새로운 heap 공간에 만들어지기 때문에 hash주소값이 다르다.
//		Car_2 obj_2 = new Car_2(obj_1);
		
		System.out.println(" obj_1 color : " + obj_1.color + " , obj_1 gearType : " + obj_1.gearType + " obj_1 door : " + obj_1.door);
		System.out.println(" obj_2 color : " + obj_2.color + " , obj_2 gearType : " + obj_2.gearType + " obj_2 door : " + obj_2.door);
		
		System.out.println();
		System.out.println(obj_1);
		System.out.println(obj_2);
		System.out.println();
	
		
		obj_1.door = 99;
		obj_1.color = "분홍색";
		
		System.out.println(" obj_1 color : " + obj_1.color + " , obj_1 gearType : " + obj_1.gearType + " obj_1 door : " + obj_1.door);
		System.out.println(" obj_2 color : " + obj_2.color + " , obj_2 gearType : " + obj_2.gearType + " obj_2 door : " + obj_2.door);
		
		
	}

}

 


출발하려는데,, 우산도 안챙겼는데 비가 부슬부슬 오길래.. 다시 올라가기도 귀찮고 해서 그냥 비맞으면서 학원 등원 시작..

 

ㅋㅋㅋㅋㅋ 오늘부터 자리가 확정되는 날인데,, 강사님께서 먼저 학원에 도착하는 순서대로 자리를 고를 수 있다고 해서,, 수강생분들이 진짜 엄청 빨리 오셨다.. 평소에 7시 50분쯤 ? 도착하면 학원 불 다 꺼져있고,, 혼자서 사색을 즐겼는데 ㅋㅋㅋㅋㅋㅋㅋ  오늘은 도착하니까 막 북적북적 ㅋㅋㅋㅋㅋㅋㅋ 제일 빨리오신분은 6시 20분,,,이라고,,, 여러분 9시 수업이라구요,,,,, 나는 결국 자리도 괜찮은데 앉고 ㅎㅎ 수강생 분중에서 큰 형님께서 커피까지 사주셨다 ㅎㅎ 최고 ~~

 

오전 수업중에 블로그 통계를 봤는데,, 분명 어제는,, 35명와서 좋아했는데,, 오늘은 0명,,, 내 주식마냥 떨어지네

 

 

오늘은 건이가 ABC 사줬음.. 착한 건이 고마워.. 우리 건강하자..

 

점심시간은 내 소울푸드인 돈가스를 먹었다.. 오늘은 점심시간에 배가 별로 안고팠다.. 왜 그러지,, 나 아픈가....? 그럴리가 없는데.. 돈가스를 먹으면서도 행복하지 않았다.. 곰곰히 생각해보니 바로 전에 배운 객체 개념이 잘 안잡혀서 머리속이 복잡했나보다..

 

집가는길에.. 내 마음을 대변하는 .. 코딩 왕초보 탈출하게 해주세요.......

 

아니 아무리 생각해도 스카 진짜 가성비인거같음,,, 시원하고 조용하고,, 그래서 시원하게 잘 수 있음.. 정말 좋은 곳...입니다..

코딩하다가 어떤걸 객체화 시켜볼까 하다가.. 밖에 보니 신호등이 보였다.. 신호등으로 객체 쌉 조짐 ㅋ 아이디어 주세여

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

KH 13일차  (0) 2022.07.18
KH 12일차  (0) 2022.07.15
KH 10일차  (0) 2022.07.13
KH 9일차  (2) 2022.07.12
KH 8일차  (0) 2022.07.11
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크