1. 교통 수단(버스, 지하철 이용)
John님의 남은 돈은 7500원입니다.
Kelly님의 남은 돈은 7000원입니다.
Harry님의 남은 돈은 10000원입니다.
버스 100번의 승객은 1명이고, 수입은 1000원입니다.
2호선의 승객은 1명이고, 수입은 1500원입니다.
7호선의 승객은 2명이고, 수입은 3000원입니다.
public class Student {
// 멤버 변수
String name;
int money;
// 생성자
public Student(String name, int money)
{
this.name = name;
this.money = money;
}
public void takeBus(Bus bus)
{
this.money -= 1000;
bus.take(1);
}
public void takeSubway(Subway subway)
{
this.money -= 1500;
subway.take(1);
}
public String getName() {
return name;
}
public int getMoney() {
return money;
}
public void showInfo() {
System.out.println(this.getName() + "님의 남은 돈은 " + this.getMoney() + "원입니다.");
}
}
public class Bus {
int busNum;
int passenger;
int intake=0;
// 생성자
public Bus(int num)
{
this.busNum = num;
}
// 탑승
public void take(int passenger) {
this.passenger++;
this.intake+=1000;
}
public int getBusNum() {
return busNum;
}
public int getPassenger() {
return passenger;
}
public int getIntake() {
return intake;
}
public void showInfo() {
System.out.println("버스 " + this.getBusNum() + "번의 승객은 " + this.getPassenger()
+ "명이고, 수입은 " + this.getIntake() + "원입니다.");
}
}
public class Subway {
int subwayLine;
int passenger;
int intake=0;
// 생성자
public Subway(int num)
{
this.subwayLine = num;
}
// 탑승
public void take(int passenger) {
this.passenger++;
this.intake+=1500;
}
public int getSubwayLine() {
return subwayLine;
}
public int getPassenger() {
return passenger;
}
public int getIntake() {
return intake;
}
public void showInfo() {
System.out.println(this.getSubwayLine() + "호선의 승객은 " + this.getPassenger() +
"명이고, 수입은 " + this.getIntake() + "원입니다.");
}
}
public class takeTrans {
public static void main(String[] args) {
Student stu1 = new Student("John", 10000);
Student stu2 = new Student("Kelly", 10000);
Student stu3 = new Student("Harry", 10000);
Bus bus100 = new Bus(100);
Subway subway2 = new Subway(2);
Subway subway7 = new Subway(7);
stu1.takeBus(bus100);
stu2.takeSubway(subway2);
stu1.takeSubway(subway7);
stu2.takeSubway(subway7);
stu1.showInfo();
stu2.showInfo();
stu3.showInfo();
bus100.showInfo();
subway2.showInfo();
subway7.showInfo();
}
}
객체 지향 언어의 특징
상속
-기존의 클래스를 이용해 새로운 클래스를 만들어 변수와 메서드를 추가로 정의한 것
(객체들 사이의 계층적 구조를 이룰 수 있음)
-상속은 코드를 간결하게 해 코드의 재사용성을 높이는 객체지향의 핵심 개념
다형성
-하나의 인터페이스를 이용해 서로 다른 구현을 제공 함
-메서드 오버로딩: 한 클래스 안에 같은 이름의 메서드를 여러 개 정의하면서 그 인자의 개수나 유형을 다르게 하는 형태
-메서드 오버라이딩: 상속 관계에 있는 하위 클래스가 상위 클래스가 가지고 있는 메서드를 재정의 하는 것
(재정의된 메서드가 선언된 형태는 상위 클래스에서 선언된 것과 같음)
추상화
-현실 세계에서 존재하는 다양한 객체들의 공통된 특성을 모아 일반화 해놓은 것
캡슐화
-변수와 메서드를 하나의 추상화된 클래스로 묶는 과정을 의미 함
(객체가 제공하는 메서드를 통해 객체를 이용하고 데이터가 실제로 어떻게 처리 되는 지 알 필요 없음)
정보 은닉
-캡슐화된 변수나 메서드를 선택적으로 공개하거나 숨길 수 있음
기어를 2단으로 변경 후 고정한다.
public class Car {
String name;
int currentGear;
public void changeGear(int gear)
{
System.out.println("기어를 " + gear + "단으로 변경한다.");
currentGear = gear;
}
public String get_CurrentState()
{
return name +"의 현재 기어 상태: " + currentGear;
}
}
public class Taxi extends Car {
int fare;
int passenger;
}
// 다형성
// 1. 오버라이딩 >> 출력 : 기어를 2단으로 변경 후 고정한다.
public class MyTaxi extends Taxi {
public void changeGear(int gear)
{
System.out.println("기어를 " + gear + "단으로 변경 후 고정한다.");
currentGear = gear;
}
public static void main(String[] args) {
MyTaxi taxi = new MyTaxi();
taxi.name = "24바 2455";
taxi.currentGear = 1;
taxi.fare = 3500;
taxi.passenger = 2;
taxi.changeGear(2);
taxi.get_CurrentState();
}
}
버스는 초록색입니다.
움직이고 있습니다.
public class Car {
public void CurrentState()
{
System.out.println("움직이고 있습니다.");
}
}
class Bus extends Car {
String color;
public void Color(String color)
{
System.out.println("버스는 " + color + "입니다.");
}
}
public class MyBus {
public static void main(String[] args) {
Bus bus = new Bus();
bus.Color("초록색");
bus.CurrentState();
}
}
'Java' 카테고리의 다른 글
컬렉션 프레임워크 (0) | 2022.06.10 |
---|---|
싱글톤 패턴 (0) | 2022.05.30 |
멤버 변수 (0) | 2022.05.24 |
자바 은닉화: 캡슐화 encapsulation (0) | 2022.05.24 |
함수 호출 방식 call by value, call by reference (0) | 2022.05.21 |