JAVA

생성자 이용해서 버스, 학생, 지하철 만들어 보기

jiyoon12 2025. 4. 24. 00:27
  • 버스
package ch10;

public class Bus {

    int busNumber;
    int count;
    int money;

    public Bus(int number) {
        busNumber = number;
        // 객체 생성 시 제일 먼저 실행 되는 부분
    }

    // 승객을 태우다
    public void take(int pay) {
        //money = money + pay;
        money += pay;
        count++;
    }

    public void showInfo() {
        System.out.println("======상태창======");
        System.out.println("버스 호선: " + busNumber);
        System.out.println("버스 승객 수: " + count);
        System.out.println("버스 수익금: " + money);
    }
}

 

  • 학생
package ch10;

public class Student {
    String name; // 이름
    int money; // 소지금

    // 메개변수 2개를 받는 생성자를 만들어 보자.
    public Student(String n, int m) {
        name = n;
        money = m;
    }

    // 학생이 버스를 탄다
    public void takeBus(Bus bus) {
        bus.take(1000);
        // 버스에 천원을 내고 내 멤버 변수 money (천원을 빼자)
        money = money - 1000;
    }
    // 학생이 지하철을 탄다
    // 학생이 상태창을 보여준다

    public void showInfo() {
        System.out.println("======상태창=======");
        System.out.println("학생 이름 : " + name);
        System.out.println("학생 소지금 : " + money);
    }
}

 

  • 지하철
package ch10;

public class Subway {

    int lineNumber;
    int count;
    int money;

    // 생성자
    public Subway(int number) {
        lineNumber = number;
    }

    // 승객을 태우다
    public void take(int pay) {
        money += pay;
        count++;
    }

    public void showInfo() {
        System.out.println("======상태창======");
        System.out.println("지하철 호선: " + lineNumber);
        System.out.println("지하철 승객 수: " + count);
        System.out.println("지하철 수익금: " + money);
    }
}

 

  • 테스트
package ch10;

public class GoingToSchool {

    public static void main(String[] args) {
        Bus bus1 = new Bus(133);
        Bus bus2 = new Bus(1004);

        Subway subway1 = new Subway(3);

        Student s1 = new Student("홍길동", 10000);
        Student s2 = new Student("홍길동", 5000);

//        s1.showInfo();
//        // bus1 -> 실제 값은 주소값이다
        s1.takeBus(bus1);
        s2.takeBus(bus1);
        System.out.println("-----------------");

        s1.showInfo();
        bus1.showInfo();

        // 사전 기반 지식
        // 기본 데이터, 참조 타입
        // int a; (값이 담긴다)
        // 대문자로 선언하는 데이터 타입은 (참조 타입이다)
        // Student s1 <--- s1 (주소값)
    }
}
package ch10;

public class GoingToSchool2 {

    public static void main(String[] args) {

        // 버스 객체를 3개 생성해 보시오
        Bus b1 = new Bus(50);
        Bus b2 = new Bus(1002);
        Bus b3 = new Bus(99);

        // 학생 객체를 2명 생성해 보시오
        Student s1 = new Student("짱구", 10000);
        Student s2 = new Student("유리", 20000);


        // 학생이 버스를 타는 행위를 만들어 보세요
        s1.takeBus(b1);
        s2.takeBus(b3);

        // 버스에 상태창을 출력해서 결과를 확인해 보자.
        s1.showInfo();
        s2.showInfo();
    }
}

'JAVA' 카테고리의 다른 글

접근 제어 지시자(access modifier)  (0) 2025.04.24
함수, 메서드, 생성자 복습하기  (0) 2025.04.24
생성자(constructor)  (0) 2025.04.24
메서드(method)  (0) 2025.04.24
함수 호출과 스택 메모리  (0) 2025.04.24