JAVA OOP
객체 지향 - class
클래스
- class는 객체에 대한 설계도
- 설계도 대로 인스턴스를 하나 만들면 그제서야 메모리에 올라간다
사용법
- 객체를 사용해보자.
- 어떻게?
- 서로 다른 클래스에 함수를 만든다
- main에서 사용할 클래스의 함수를 new로 선언한다. (생성자 이용 가능)
- new로 선언한 클래스의 변수나 함수를 호출하여 사용
생성자 Constructor객체
역할 : 객체를 인스턴스화(생성) 하는 역할
문법 : 함수와 비슷하게 생겼는데 이름이 클래스명이고 리턴 값이 없다
객체를 생성할 때 new 키워드와 함께 사용. 생성할 때 필요한 데이터를 강제하는 역할
클래스에는 반드시 최소하나이상의 생성자가 존재
클래스에 생성자가 명시적으로 없더라도 컴파일러가 디폴트 생성자를 넣어주기 때문에 new키워드와 함께 생성자를 호출 가능하다
디폴트 생성자는 매개변수와 구현부가 없다
실습
- Human 클래스를 만든다
- 객체로서 필요한 정보(이름,나이 등)를 설정
- 객체로서 행동(달리기, 동물 기르기 등)을 설정
- Human.java
1 | public class Human { |
- Dog 클래스를 만든다
- 객체로서 필요한 정보(이름, 나이 등)를 설정
- 객체로서 행동(달리기, 점프하기 등)을 설정
- Dog.java
1 | public class Dog { |
- Main에서 의도대로 작성한 클래스들을 이용해본다
- main.java
1 | public class Main { |
- 결과
- main.java 클래스를 실행한 결과이다.
생성자 사용 vs 비사용
- 생성자 = 객체를 생성할 때 new 키워드와 함께 사용. 생성할때 필요한 데이터를 강제하는 역할.
[생성자 비사용]
특징 : 미리 변수의 내용을 설정해야 한다
Human.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14public class Human {
// 이름, 나이, 성별
// 길들이다, 먹이를 주다, 달리다
String name="김씨";
int age=10;
String gender="male";
public void walk() {
System.out.println("여유롭게 걸어갑니다");
}
public void run() {
System.out.println("신속하게 달려나갑니다");
}
}Main.java
1
2
3
4
5
6
7
8
9
10
11
12
13public class Main {
public static void main(String[] args) {
Human kim = new Human(); // Human 클래스에서 kim 객체 생성
System.out.println(kim.name); // kim 이름 출력
kim.walk(); // kim의 함수 호출
// Dog dog1 = new Dog(); // Dog 클래스에서 dog1 객체 생성
// dog1.jump(); // dog1의 함수 호출
}
}
[생성자 사용]
특징 : 미리 변수의 내용을 설정하지 않아도 작동한다
단, 생성할때 필요한 데이터 입력를 강제한다
생성자 쉽게 생성 = ctrl + space바 + Enter
Human.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19public class Human {
// 이름, 나이, 성별
// 길들이다, 먹이를 주다, 달리다
String name;
int age;
String gender;
public Human(String name, int age) {
this.name = name;
this.age = age;
}
public void walk() {
System.out.println("여유롭게 걸어갑니다");
}
public void run() {
System.out.println("신속하게 달려나갑니다");
}
}Main.java
1
2
3
4
5
6
7
8
9
10
11
12
13public class Main {
public static void main(String[] args) {
Human kim = new Human("아무개", 21); // Human 클래스에서 kim 객체 생성
System.out.println(kim.name); // kim 이름 출력
kim.walk(); // kim의 함수 호출
// Dog dog1 = new Dog(); // Dog 클래스에서 dog1 객체 생성
// dog1.jump(); // dog1의 함수 호출
}
}
개인 실습
- 이후에 개인적으로 클래스를 사용해보자
- 간단한 게임 제작
- 위에서 한 것처럼 플레이어 클래스, 몬스터 클래스를 생성
- 서로에게 공격하는 함수를 넣고 main에서 사용해보자
You need to set
install_url
to use ShareThis. Please set it in _config.yml
.