본문 바로가기
IT관련/JAVA_정리 노트

객체 기초

by XoX 2020. 4. 16.
728x90
개인적인 메모를 위해 작성된 글이므로 가벼운 참고용으로 봐주세요.

 

■ 객체 = 폴더

메소드가 관련된 것들을 그룹핑한 것이듯,

객체도 변수들과 메소드들이의 그룹핑한 모음과 같다.

객체는 폴더에 비유할 수 있다.

객체라는 폴더 안에는 변수와 메소드를 담고 있다.

변수는 객체폴더안의 txt파일, 메소드는 객체폴더안의 exe파일로 비유된다.

그리고 변수에 담는 데이터는 txt파일을 열면 쓰여있는 내용,

메소드는 실행시키면 만들어진 목적에 맞게 작동되는 파일이다.

 

 

class Main {
  public ststic void main(String[] args){ 
    자동차 내자동차 = new 자동차();  // 자동차라는 폴더를 만듬. 
    내자동차.번호1="1하 2345"  // '자동차'폴더에 제목'번호'인 txt파일 생성, txt문서 열면 "12호 3456" 이라고 쓰여있음.
    내자동차.최고속력=250;  // '자동차'폴더에 제목'최고속력'인 txt파일 생성,, txt문서 열면 250 이라고 쓰여있음.
    내자동차.연식=2019;  // '자동차'폴더에 제목'연식'인 txt파일 생성, txt문서 열면 2019 이라고 쓰여있음.

  } 


//그런데 이렇게 파일을 만들려면 아래와 같이 객체의 틀에 그 구성이 먼저 만들어져 있어야 한다. 
class 자동차{ 
  String 번호; 
  int 최고속력; 
  int 연식; 

 

 

 

 "묶으면 간편해진다."

변수에는 내용물 1개만 담을 수 있다.
그런데 만약, 3개를 담고 싶다면? & 3개 관리하기 쉽게 묶고 싶다면?

객체를 사용! 하지만 말했다싶이, 변수는 원래 한개만 담을 수 있다.

그래서 변수에 한개의 리모컨을 담고 3개 공간 속 데이터를 원격조종하도록 연결 

 

class Main { 
  public ststic void main(String[] args){ 

    int num0 = 10;

    int num1 = 20;  

    int num2 = 30;

// 위는 3개가 각각 따로 담겨 지역변수 메모리에 있다.

// 아래는 위를 묶어준 것. 다시 말하지만 nums에는 숫자가 들어가있는 게 아니라, 그냥 리모컨이다.

    int[] nums = new int[3];  // int[] nums = {10,20,30}과 같음.

    nums[0] = 10;

    nums[1] = 20;

    inums[2] = 30;

 

    int[] nums2=nums;  // 리모컨이 복사 됨. 리모컨이 2개가 됨.

    System.out.println(nums2[0]);

    System.out.println(nums2[1]);

    System.out.println(nums2[2]);

    nums2[0] =50;  // 복사된 리모컨로 채널을 바꿈. 당연히 원본 리모컨도 바뀐 데이터를 인식하고 원격조정 함. 

    System.out.println(nums2[0]);

   }

}

// 실행하면 10 20 30 50 출력됨. 

 

int [] __ = new int[숫자];  // new int[숫자]로 객체를 만들면 int [] __ 에는 리모컨이 들어감.

int [] num = new int[3];  // int[]num은 스택, new int[2]은 힙 영역의 메모리에, num이라는 리모컨이 둘을 연결 
num[0]=100;
num[1]=50;

num[2]=10;
int[] num2 = num;  // num2라는 리모컨은 num이라는 리모컨과 같은 화면을 조정한다. 
System.out.printf("%d%n", num2[0])  // 화면에 떠있는 num2[0]는 100이므로 프린터로 100이 출력된다. 

 

 

 

 

함수실행 유의할 점

테슬라를 두번 달리게 한다고 할 때, 다음과 같은 코드는 실행될까?

 

class Main{ 
  public static void main(String[] args){ 
    테슬라.달리다();

    테슬라.달리다();

  } 

class 테슬라{ 
  void 달리다(){ 
  System.out.println("달립니다."); 

  void 서다(){ 
  System.out.println("멈춥니다."); 

  } 
}

 

No, 왠지 될 것 같지만 이건 설계도를 달리게 만든 것과 같다.

테슬라 테슬라R = new 테슬라();

위와같이 객체를 만들고를 리모컨(테슬라R)을 통해 원격조정해야지만 실행된다. 

 

class Main{ 
  public static void main(String[] args){ 

    테슬라 테슬라R = new 테슬라();

    테슬라R.달리다();

    테슬라R.달리다();

  } 

class 테슬라{ 
  void 달리다(){ 
    System.out.println("운전합니다"); 

  }  

  void 서다(){ 
    System.out.println("멈춥니다"); 

  } 
}

 

 

 

 

728x90
반응형

'IT관련 > JAVA_정리 노트' 카테고리의 다른 글

메서드(method) 선언  (0) 2020.04.22
변수선언 배열선언  (0) 2020.04.20
형변환 기초  (0) 2020.04.15
print println pritf 차이점  (0) 2020.04.15
템플릿 기초  (0) 2020.04.14

댓글