728x90
객체와 클래스
클래스 aka.공장
- 대량 생산을 위해 객체를 만들기 위한 틀
- 변수: 객체의 속성
- 메서드: 객체의 기능
객체생성 명령
ClassName instanceName(생산이름,임의) = new Constructor( );
// 클래스 안의 코드 작성
public calss Pen {
}
// PenMain
public class PenInstanceExample {
public static void main(String[] args) {
Pen redPen = new Pen(); //redPen은 생산이름
System.out.println(redPen);
}
}
예시
- 3개의 계산기
클래스 안에는... 메서드, 변수, 생성자
메서드 (method)
- 기능(연산, 기능 등)을 나타냄
변수 (Variable)
멤버변수 (Member Variable)
- 클래스 바로 직속 하위에 위치
- 속성을 나타냄
- 객체 생성할 때 각 데이터 타입으로 자동 초기화 (기본값: 정수0, 실수0.0, 논리false, 객체null)
- 멤버 변수는 클래스 Pen{ }안에 있어서 거기서는 다 나타낼 수 있음 = Class 밖에서도 접근 가능
- mian 클래스 or 대량생산 class에서도 사용 가능
지역변수 (Local Variable)
- 메서드 안에 위치
- 기능(연산, 기능 등)을 나타냄
- 사용 전 반드시 초기화 필수
public class Pen {
public String color;
int price; // 멤버 변수
public void write() { // 메서드
system.out.println("Hello World1");
}
}
// Pen이 생성되면
// 속성: 가격과 색상
// 기능: 글을 쓰는 기능
생성자 (Constructor)
생성자와 메서드 구분 필수!
- 객체가 생성될 때, 객체의 상태(멤버변수)를 초기화하는데 사용
- 객체가 생성될 때, new 키워드 다음에 오는 것
- 메서드와 모양이 비슷 but, 반환 타입을 적지 않고 클래스 이름과 대/소문자까지 똑같아야 함 + ()
- 반드시 클래스 안에 하나 이상 선언
만일 생성자를 만들지 않을 경우, 자바 가상 머신(JVM: Java Virtual Machine)이 자동으로 기본 생성자 만들어 줌 - 기본 생성자: 매개 변수를 가지지 않는 기본 형태의 생성자
생성자를 만드는 규칙
- 생성자의 이름은 클래스 이름과 대/소문자까지 정확히 같아야 함
만약 클래스 이름과 다른 이름으로 만들면 메서드로 간주함 - 메서드와는 달리 반환 유형 적지 X
- 다른 유형으로 여러개 생성 가능(생성자 오버로딩=중복)
ex) 클래스 이름(); 매개값을 받아서 모양을 다르게 해 줄 수 있음
예제 연습
Calculator - 계산기
- 이 경우 멤버 변수는 1개이고, 계속 호출 할수록 전에 호출한것부터 더해져서 출력
Pen
Variable - 멤버, 지역, 매개변수 확인
Person
2.은 출력이 아니라 name = 홍길동 저장, age = 100 저장하는 것
Phone - 생성자의 다양성
Person 업그레이드 ver.
Tv - 자유 실습
// 선생님 풀이
public class Tv {
String company;
int ch;
boolean power;
// 생성자
Tv() { }
Tv(String a, int b, boolean c) { // 인위적으로 생성한 생성자
company = a;
ch = b;
power = c;
}
// 메서드1
boolean power() {
if(power) {
system.in.println("전원 Off");
power = false;
} else {
system.in.println("전원 On");
power = true;
}
return power;
// 메서드2
int changeCh(int num) {
ch = num; // 채널변경
system.in.println(ch + "번 변경");
return ch;
}
}
오늘 하루
더보기
기억에 남는 부분
- 클래스는 aka. 공장이다!
- 계속 불러서 사용 가능하다.
- 객체 생성 후 부를때는 .(점)으로 호출
어려운 부분
- 멤버변수, 지역변수, 매개변수의 이용방법이 헷갈림
- 선생님이 한 Tv 풀이가 사알짝 헷갈림 (boolean 사용방법)
문제 해결 부분
- 자유 실습에서 Tv에 관한 속성(멤버변수), 기능(지역변수)를 잘 사용함
728x90
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] overriding(재정의), overloading(중복) (0) | 2022.10.07 |
---|---|
[Java] Garbage Collecting, package(패키지), 데이터타입, 객체지향 프로그래밍 기술(상속, 은닉, 다형성) (0) | 2022.10.06 |
[Java] 객체 배열(Array of Objects), 메서드 실행, 피보나치 수열 (0) | 2022.10.05 |
[Java] method(메서드) (0) | 2022.10.04 |
[Java] String 클래스, 문자열 자르기(subString, split, toCharArray) (0) | 2022.09.30 |