티스토리 뷰
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 사줬음.. 착한 건이 고마워.. 우리 건강하자..
점심시간은 내 소울푸드인 돈가스를 먹었다.. 오늘은 점심시간에 배가 별로 안고팠다.. 왜 그러지,, 나 아픈가....? 그럴리가 없는데.. 돈가스를 먹으면서도 행복하지 않았다.. 곰곰히 생각해보니 바로 전에 배운 객체 개념이 잘 안잡혀서 머리속이 복잡했나보다..
집가는길에.. 내 마음을 대변하는 .. 코딩 왕초보 탈출하게 해주세요.......
아니 아무리 생각해도 스카 진짜 가성비인거같음,,, 시원하고 조용하고,, 그래서 시원하게 잘 수 있음.. 정말 좋은 곳...입니다..
코딩하다가 어떤걸 객체화 시켜볼까 하다가.. 밖에 보니 신호등이 보였다.. 신호등으로 객체 쌉 조짐 ㅋ 아이디어 주세여