package ex_class;
public class Ex3 {
public static void main(String[] args) {
/*
* 클래스의 메서드
*
* < 메서드 정의 기본 문법 >
* [접근제어자] 리턴타입 메서드명([매개변수목록]) {
*
* // 구현부
*
* }
*
* 접근제어자 : 해당 메서드에 접근할 수 있는 범위
* 리턴타입 : 메서드가 모든 작업을 마치고 반환하는 데이터의 타입(반환 값이 없을 경우 void)
* 메서드명 : 메서드를 호출하기 위한 이름
* 매개변수목록 : 메서드 호출 시 전달되는 인수의 값을 저장할 변수들(변수 선언!)
* 구현부 : 메서드의 고유 기능을 수행하는 명령문의 집합
*
*/
// Animal 클래스의 인스턴스(a1) 생성 및 데이터 저장 후 출력
// ex) 이름 : 멍멍이, 나이 : 2
Animal a1 = new Animal();
// Animal 인스턴스 a1의 인스턴스 변수 초기화
a1.name = "멍멍이";
a1.age = 2;
// Animal 인스턴스 a1의 인스턴스 변수 값 출력
System.out.println("이름 : " + a1.name + ", 나이 : " + a1.age);
// Animal 인스턴스 a1의 print() 메서드 호출
a1.print();
// Animal 클래스의 인스턴스(a2) 생성
// ex) 이름 : 야옹이, 나이 : 3
// 생성된 인스턴스의 print() 메서드 호출
Animal a2 = new Animal();
a2.name = "야옹이";
a2.age = 3;
a2.print();
}
} // Ex3 클래스 끝
// 동물(Animal) 클래스 정의
// 멤버변수 : 이름(name, 문자열), 나이(age, 정수)
class Animal {
// 멤버변수 선언
String name;
int age;
// "동물 울음 소리!" 출력하는 메서드 cry() 정의
// => 매개변수도 없고, 리턴값도 없는 메서드
public void cry() {
System.out.println("동물 울음 소리!");
}
// print() 메서드 정의 => 매개변수도 없고, 리턴값도 없는 메서드
// 인스턴스변수 name과 age의 데이터를 출력
// 이름 : XXX, 나이 : XXX
public void print() {
// 클래스 내의 메서드에서 멤버변수(인스턴스 변수)에 자유롭게 접근 가능
// => 단순히 변수명만으로 접근
System.out.println("이름 : " + name + ", 나이 : " + age);
}
}
package ex_class;
public class Test3 {
public static void main(String[] args) {
Car c = new Car();
c.carName = "SONATA";
c.companyName = "Hyundai";
c.cc = 2000;
System.out.println("차종 : " + c.carName);
System.out.println("제조사 : " + c.companyName);
System.out.println("배기량 : " + c.cc + "cc");
System.out.println("현재속력 : " + c.speed + "km/h, 최대속력 : " + c.maxSpeed + "km/h");
System.out.println("==========================");
c.speedUp(50); // 0 -> 50 km/h 변경
c.speedUp(100); // 50 -> 150 km/h 변경
c.speedUp(100); // 150 -> 250 km/h 변경
// 단, 최대속력이 200이므로 250 -> 200으로 변경 후
// "최대 속력 도달!", 현재 속력이 출력
System.out.println("==========================");
c.speedDown(50); // 200 -> 150 km/h 변경
c.speedDown(250); // 150 -> -100 km/h 변경
// 현재속력이 -100 이므로 -100 -> 0으로 변경 후
// "차량 정지!"과 현재 속력 출력
}
} // Test3 클래스 끝
/*
* 자동차(Car) 클래스 정의
* 멤버변수 선언
* - 자동차 차종(carName, 문자열)
* - 자동차 브랜드(companyName, 문자열)
* - 자동차 배기량(cc, 정수)
* - 최대속력(maxSpeed, 정수 => 200으로 미리 설정)
* - 현재속력(speed, 정수)
*
* 메서드 정의
* 1) 속력 증가 speedUp()
* - 증가시킬 속력(s)을 전달받아 현재속력(speed)에 누적 후
* "현재속력 : XXX km/h" 출력
* 단, 현재속력이 최대속력(maxSpeed)보다 클 경우
* 현재속력을 최대속력으로 변경 후 "최대 속력 도달!" 출력
* - 매개변수 1개(증가시킬 속력 s), 리턴값 없음
* 2) 속력 감소 speedDown()
* - 감소시킬 속력(s)을 전달받아 현재속력(speed)에서 차감한 후
* "현재 속력 : XXX km/h" 출력
* 단, 현재속력이 0 보다 작을 경우 현재 속력을 0으로 변경 후
* "차량 정지!" 출력
* - 매개변수 1개(감소시킬 속력 s), 리턴값 없음
*
*/
class Car {
// 멤버변수 선언
String carName;
String companyName;
int cc;
int maxSpeed = 200; // 최대속력
int speed; // 현재속력
// 메서드 정의
// 1) 속력증가 speedUp()
public void speedUp(int s) {
// 전달받은 속력(s)을 현재속력(speed)에 누적
speed += s;
// 현재속력(speed)이 최대속력(maxSpeed)보다 클 경우
if (speed >= maxSpeed) {
speed = maxSpeed;
System.out.println("최대 속력 도달!");
}
System.out.println("현재속력 : " + speed + " km/h");
}
// 2) 속력감소 speedDown()
public void speedDown(int s) {
// 전달받은 속력(s)을 현재속력(speed)에서 차감
speed -= s;
// 현재속력(speed)이 0보다 작을 경우
if (speed < 0) {
speed = 0;
System.out.println("차량 정지!");
}
System.out.println("현재속력 : " + speed + " km/h");
}
}