원지의 개발
article thumbnail
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
profile

원지의 개발

@원지다

250x250