❗ 객체지향 프로그래밍 |
* 현실세계에서 독립적인 존재들 (객체)간의 상호작용(행위)를 프로그래밍 언어를 통해 코드로 구현하는 것. * 구현하고자 하는 프로그램 상에 객체(변수)를 만들기 위해서는(생성하기 위해서는) => 클래스라는 틀을 먼저 만들어야 한다. * 클래스란? 각 객체들의 속성(정보, 행위)들을 담다내는 그릇 또는 틀 같은 존재! * VO(Value Object) * 객체 생성 // ㅇㅇ씨네 도마뱀 이름은 ? 용감이 => String name; // 배가 하얗다. => String abdColor; // 발은 노랗다. => String ftColor; // 몸도 노랗다. => String bdColor; // 눈은 빨갛다. => String ouColor; new Lizard(); // 객체를 생성한 것! => new 키워드사용!!!!! 메모리의 heap 영역에 공간이 할당됨 Lizard L1 = new Lizard(); // stack 영역의 L1변수(박스)가 heap영역의 Lizard 공간 번지를 가리킴 번지2 Lizard L2 = new Lizard(); // heap 영역에 L2 변수가 heap 영역에 만들어진 또 다른 공간을 가리킴 번지2 |
❗vo 클래스의 구조 (필드부, 생성자부, 메소드부) |
public class 클래스이름{ //클래스 시작 1. 필드부 = 속성 (변수) 2. 생성자부 3. 메소드부 = 행위(메소드) } //클래스 끝 [필드부] 정보를 담는 부분! 접근제한자 자료형 필드이름; ex) public String name; // 필드 선언 public double wt; 접근제한자 : 이 필드에 접근할 수 있는 범위를 제한할 수 있음 public > protected > default > private 클래스 안에서 필드를 선언할 때 반드시!!! 접근 제한자를 써줄 것임!!!! (필드 == 멤버변수 == 클래스변수) [생성자부] 아직 안배움 [메소드부] 기능을 구현하는 부분! 접근제한자 반환형 메소드식별자(매개변수) { 메소드를 호출하면 실행할 코드; } public void eat(int wt) { //먹을 때마다 체중을 늘리는 메소드 this.wt += wt; } * public 접근제한자 : 메소드를 호출할 수 있는 범위를 제한해준다. * void 반환형 : 메소드의 결과값의 자료형을 지정해준다 void -> 돌려줄 값이 없다. 돌려줄 값이 있다면 돌려줄 값의 형태를 적어줌!! (자료형) * ( ) 매개변수 : 메소드 호출 시 입력값으로 넣어주는 변수. 해당 메소드 실행중에만 사용 가능한 변수. 생략 가능 * method() 메소드식별자() |
public class Run {
public static void main(String[] args) {
// ㅇㅇ씨네 도마뱀 이름은 ? 용감이 => String name;
// 배가 하얗다. => String abdColor;
// 발은 노랗다. => String ftColor;
// 몸도 노랗다. => String bdColor;
// 눈은 빨갛다. => String ouColor;
//1. new Lizard(); // 객체를 생성한 것!
Lizard L1 = new Lizard();
Lizard L2 = new Lizard();
L1.name = "용감이";
L1.abdColor = "하얗다";
L1.ftColor = "노랗다";
L1.bdColor = "노랗다";
L1.ouColor = "빨갛다";
L1.wt = 0.15;
// L1에 접근해서 정보를 넣음. heap영역의 Lizard 공간에 정보를 넣은 것!
System.out.println(L1.name);
System.out.println(L1.abdColor);
System.out.println(L1.ftColor);
System.out.println(L1.bdColor);
System.out.println(L1.ouColor);
System.out.println(L1.wt);
System.out.println("------------------");
L2.name = "도롱이";
L2.abdColor = "분홍색";
L2.ftColor = "보라색";
L2.bdColor = "보라색";
L2.ouColor = "검은색";
L2.wt = 5;
System.out.println(L2.name);
System.out.println(L2.abdColor);
System.out.println(L2.ftColor);
System.out.println(L2.bdColor);
System.out.println(L2.ouColor);
System.out.println(L2.wt);
L2.eat(2);
L2.eat(2);
System.out.println(L2.wt);
L2.jump();
L2.jump();
L2.jump();
L2.jump();
L2.jump();
L2.jump();
L2.jump();
System.out.println(L2.wt);
// 직접적으로 접근해서 값 대입
// 직접적으로 접근해서 값 조회
// 직접 접근해서 값을 대입하고 조회할 경우 => 보안의 문제가 생길 수 있음
// 객체 지향 설계 원칙 중 하나가 정보은닉! >> 객체 내부의 정보를 조회, 접근, 수정 할 수 없도록
// 정보은닉을 하기 위한 기술 중 하나 >> 캡슐화(encapsulation)
}
}
public class Lizard {
// [필드부] 필드선언
public String name;
public String abdColor;
public String ftColor;
public String bdColor;
public String ouColor;
public double wt;
// [생성자부]
// 아직 안배웠으니 넘어감
// [메소드부]
public void eat(int wt) {
this.wt += wt;
}
public void jump() {
if(0.15 <= wt && wt <= 1) {
System.out.println("살 안빼~~ 너나해");
} else {
wt -= 0.5;
}
}
'국비 > Java' 카테고리의 다른 글
[09-1] 객체 - 메소드, 오버로딩(overloading) (0) | 2022.04.19 |
---|---|
[08] Java 객체 - 캡슐화(encapsulation), 필드(field), 메소드(method) (0) | 2022.04.18 |
[07-1] Java - 배열, 배열복사 (0) | 2022.04.15 |
[06-2] Java - 배열(Array) (0) | 2022.04.14 |
[06-1] Java - 탈출문 (break, continue) (0) | 2022.04.14 |