JAVA

JAVA 3주차

Zㅣ존수빈zz 2022. 11. 16. 16:22

1. Class

  • 클래스: 변수와 함수를 담은 꾸러미(묶음)   --> 클래스 기반 코딩: 객체지향
  • 변수: 값을 저장하는 공간
    ex) int num = 3;
  • 함수(메서드): 코드를 저장하는 공간
    - 형식: 자료형 함수명 (함수를 사용할 때 전달할 값) {
                            함수를 사용하면 실행할 코드;
                }
    ex) int function (int num1, int num2) {
               int result = num1 + num2;return result;
         }
    *return: 함수를 사용한 곳에 "결과"로 알려줄 값
  • 다른 클래스 사용하기
    - 객체화: 클래스명 변수명 = new 클래스명();
                   ex) MyClass mc = new MyClass();     // mc: 객체
    -  사용 : 변수명.메서드(함수를 사용할 때 전달할 값);
                  ex) mc.function(3, 4)     --> 3+4
ex) 1
public class
Class4 {
     public static void main(String[] args) {
          Aircon aircon = new Aircon();          // 객체화
          aircon.temp = 20;
          System.out.println(aircon.temp);

          aircon.powerOn();
          aircon.tempUp();
          aircon.tempUp();
          aircon.tempDown();
          aircon.currentTemp();
     }
}
class Aircon {
     int temp = 25;           // 클래스 안에서 만들어진 변수(멤버면수)
     void currentTemp() {
          int temp = 0;           // 함수 안에서 만들어진 변수(지역변수)
          // 지역변수 - 우선순위가 멤버변수보다 높음, 함수가 끝나면 사라짐. 해당 함수 안에서만 사용 가능
          System.out.println("현재 온도는 "+this.temp+"도 입니다.");
          // this. : 멤버에 있는 변수 또는 메서드를 지칭
     }
     void tempUp() {
     temp++;
     System.out.println("에어컨 온도를 올립니다. 온도: "+temp);
     }
     void tempDown() {
     temp--;
     System.out.println("에어컨 온도를 내립니다. 온도: "+temp);
     }
     void powerOn() {
     System.out.println("에어컨을 가동합니다. 온도:"+temp);
     }
}
ex) 2
public class Class5 {
     public static void main(String[] args) {
     // 객체화
     // 클래스명 객체명 = new 클래스명();
     // 클래스: 추상적인 개념(설계도)
     // 객체(object): 구체적인 대상
     Car 아빠차 = new Car();      // Car의 형태를 가진 고유 객체의 값이 됨.
     Car 엄마차 = new Car();      // 어떤 객체인가에 따라 가지고 있는 정보가 다르다. 기능 혹은 구조만 같을 뿐
     Car 내차 = new Car();

     아빠차.setInfo("아빠", "제네시스", 3388);
     엄마차.setInfo("엄마", "아반떼", 1122);
     내차.owner = "홍길동"
     내차.name = "K5";
     내차.car_num = 9999;

     // 객체지향
     System.out.println(아빠차.car_num);
     System.out.println(내차.car_num);

     아빠차.carInfo();
     엄마차.carInfo();
     내차.carInfo();
     }
}
class Car{
     // 속성
     String owner;
     String name;
     int car_num;

     public void carInfo() {
          System.out.println("차주인: "+owner+" 모델명: "+name+" 차번호: "+car_num);
     }
     public void setInfo(String owner, String name, int car_num) {
          this.owner = owner;
          this.name = name;
          this.car_num = car_num;
     }
}

 

  • 생성자: 객체화를 하는 순간에 자동으로 사용되는 메서드
    생성자의 이름은 자료형이 없으며 클래스의 이름과 같다. 객체화를 하면 자동 사용됨.
     public static void main(String[] args) {
          MyClass7 mc = new MyClass7(3, 4);
          int num = mc.sum();
          System.out. println(num);
     }
}
class MyClass7 {
     int a, b;
     MyClass7(int x, int y) {
          setNum(x, y);
     }
     void setNum(int a, int b) {
          this.a = a;
          this.b = b;
     }
     int sum() {
          rerturn a+b;
     }
}

 

  • 접근권한제어자
    - public: 모두 사용 가능
    - protected: 같은 패키지 + 상속에서 사용 가능
    - default(아무것도 쓰지 않을 때): 같은 패키지에서 사용 가능
    - private: 같은 클래스일 경우에만 사용 가능

* 변수(정보)는 private으로, 메서드는 public으로 해서 정보를 보호

class MyClass {
     private int num1;     // 멤버변수 선언 > 빈공간에 오른쪽 마우스 클릭 > source > generate getters and setters

     public int getNum1;() {     // get: 바깥에서 사용하게 할 때 (다른 클래스)
          return num1;
     public void setNum1(int num1) {     // set: 바깥에서 값을 받아올 때
          this.num1 = num1;