본문 바로가기

자바 수업 정리

수업정리 7일차.

Class

클래스의 구성요소 : 멤버변수, 메서드, (생성자)
멤버변수가 먼저,(생성자), 메서드가 뒤에 선언

클래스- 설계도
객체 - 클래스에 의해 생성되는 제품
메서드 - 객체가 할 수 있는 기능

클래스의 구성요소
멤버변수 : 속성, 정보
메서드 : 기능

 
ex ) 프린터 클래스
 - 속성(멤버변수) : 크기, 색, 제품명, 제조사, 종류
 - 기능(메서드) : 인쇄, 복사, 팩스, 스캔 

멤버변수 선언 위치

 - 클래스 생성 후 메서드 시작 전 
 - 클래스 가장 위쪽
 - 멤버변수는 클래스 안에서 사용가능. (클래스에서 생성되는 모든 메서드에서 공통적으로 사용가능)
   
객체 생성
  - 클래스명 객체명; // 선언과 값은 null
  - 객체명 = new 클래스명(); //  선언한 객체의 초기값을 생성자가 설정.
  - 클래스명 객체명 = new 클래스명();
 메서드 사용법 (클래스가 다른 메서드를 호출 할 경우)
    객체 선언 후 객체명. 메서드명();
  - 같은 클래스안에서 메서드 호출 => 메서드명();
  - 다른 클래스안에서 메서드를 호출 => 객체명.메서드명();
   
 접근제한자(제어자)
   - public : 모두 사용가능
   - protected : 나 + 패키지 + 자식클래스
   -(default) : 나 + 패키지
   - private : 나
   
  private < default < protected < public
   
  - 클래스에서 public 클래스명 : 파일명과 클래스명이 같을 때만 가능.
  - 하나의 java 파일안에 여러개의 클래스를 가지는 것은 가능함. 
  - 하지만 public class가 두개는 불가능.
  - 멤버변수, 멤버 메서드는 public을 붙이는건 문제가 없음. 사용가능.
  - 일반적으로 멤버변수는 private, 메서드는 public 선언이 일반적.
  - private : 다른 클래스에서 접근 불가능.
  - private으로 선언된 멤버변수는 getter / setter 라는 메서드를 만들어서 해당 변수에 접근 가능하도록 한다.

 

Car 클래스 만들어보기

class Car{ // 클래스명은 대문자로 시작
	//멤버변수는 private
	//name, color, year, power, speed
	
	private String name;
	private String color;
	private String year;
	private boolean power;
	private int speed;
	
	// 1. 시동을 켜야 속도를 올릴 수 있음.
	// 2. 속도가 있는 상태에서는 시동을 끌 수 없습니다.
	// 3. 속도는 0~200 사이의 범위를 가질 수 있다.
	
	// 메서드는 public
	//power() => 켜져있으면 꺼지고, 꺼져있으면 켜짐.
	// 선언부 결정. 리턴타입 => void 매개변수 x 
	public void onOff() {
		if(this.speed == 0 ) { // 속도가 0 일때만 시동을 키고 끌 수 있음
			this.power = !this.power;
		} else {
			System.out.println("속도가 0 일때만 시동을 키고 끌 수 있습니다. ");
		}
	}
	
	
	
	
	//speedUp()    // 10 씩 속력 증가
	//선언부 결정. 리턴타입 => void / 매개변수 x
	public void speedUp() {
		if(this.power) {
			if(speed >= 200) {
				speed = 200;
				System.out.println("최고속도입니다.");
				return;
			} else {
				speed +=10;
				System.out.println("speed: "+speed);
			}
		} else {
			System.out.println("power >" + this.power);
		}
	}
	
	
	
	//speedDown()
	public void speedDown() {
		if(this.power) {
			if(speed <= 0) {
				speed = 0;
				System.out.println("멈췄습니다.");
				return;
			} else {
				speed -= 10;
				System.out.println("speed: "+speed);
			}
		} else {
			System.out.println("power >" + this.power);
		}
	}
		
	//print() => name, color ,year 출력
	
	public void print() {
		System.out.println("이름: "+name+" 색깔: "+color+" 연도: "+year);
	}

	public void speedPrint() {
		if(this.power) {
			System.out.println("시동 on! speed: "+this.speed);
		} else {
			System.out.println("시동 off!!");
		}
	}

    // getter/setter

	public String getName() {
		return name;
	}



	public void setName(String name) {
		this.name = name;
	}


	public String getColor() {
		return color;
	}


	public void setColor(String color) {
		this.color = color;
	}

	public String getYear() {
		return year;
	}


	public void setYear(String year) {
		this.year = year;
	}


	public boolean isPower() {
		return power;
	}

	public void setPower(boolean power) {
		this.power = power;
	}


	public int getSpeed() {
		return speed;
	}

	public void setSpeed(int speed) {
		this.speed = speed;
	}

 

생성자

생성자 : 객체를 생성하기위해 객체의 초기화를 담당.
생성자의 접근제한자는 반드시 public 이여야 함.
생성자명은 클래스명과 반드시 같아야 함.
생성자는 메서드와 달리 return 타입이 없음.

생성자 public 클래스명(){} => 컴파일 할 때 자동 생성
생성자를 사용자가 직접 만들게 되면 기본생성자는 만들지 않음.

	public Car1() {
		//기본생성자
	}

 

생성자는 여러개 만들 수 있음. (생성자 오버로딩)

오버로딩 조건 :  매개변수의 개수가 다르거나 타입이 달라야함.

 

ex)

public Car1(String name) {
		this.name = name;
	}
	public Car1(String name, String color) {
		this.name = name;
		this.color = color;
	}
	public Car1(String name, String color, String year, String door) {
		//생성자 호출
		this(name,color);
//		this.name = name;
//		this.color = color;
		this.year = year;
		this.door = door;
	}

 

생성자를 호출 할 때는 무조건 첫 줄에서 해야함.

 

'자바 수업 정리' 카테고리의 다른 글

자바 설정 관련  (1) 2024.09.25
수업정리 8일차.  (3) 2024.07.24
수업정리 6일차.  (2) 2024.07.22
수업정리 5일차.  (0) 2024.07.19
수업정리 4일차.  (0) 2024.07.18