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;