1. 객체 지향 캡슐화, 상속, 다형성, 추상화, 인터페이스 및 예외 지식을위한 자동차 쿼리 시스템을 완성합니다.
요구 사항 설명 : 승용차, 버스, 트럭의 3 가지 유형이 있는데, 그 중 승용차의 좌석 수는 4 석, 버스 좌석 수는 53 석, 트럭 좌석 수는 2 석입니다. 패키징, 상속 및 추상화가 필요합니다. 차량의 정의를 완료하려면.
차량 정보를 수정할 수 있습니다. 트럭은 물품을 운송 할 수 있지만 적재량은 12 톤을 초과 할 수 없습니다. 사용자 정의 예외를 사용하여 오류를 처리하십시오. 자동차와 버스에는이 기능이 없으며 인터페이스를 사용해야합니다.
차
package com.song.test;
public abstract class Car {
private String name;
private String color;
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 Car(String name, String color) {
super();
this.name = name;
this.color = color;
}
public abstract String seatNum();
}
그때
package com.song.test;
public class Sedan extends Car {
public Sedan(String name, String color) {
super(name, color);
}
@Override
public String seatNum() {
// TODO Auto-generated method stub
return "4座";
}
}
버스
package com.song.test;
public class Bus extends Car {
public Bus(String name, String color) {
super(name, color);
// TODO Auto-generated constructor stub
}
@Override
public String seatNum() {
// TODO Auto-generated method stub
return "53座";
}
}
트럭
package com.song.test;
public class Truck extends Car implements Container {
private int weight;
public Truck(String name, String color,int weight) {
super(name, color);
this.weight = weight;
// TODO Auto-generated constructor stub
}
@Override
public String seatNum() {
// TODO Auto-generated method stub
return "2座";
}
@Override
public int getweight() {
// TODO Auto-generated method stub
return this.weight;
}
}
컨테이너
package com.song.test;
public interface Container {
public int getweight();
}
CarException
package com.song.test;
public class CarException extends Exception {
public CarException(String error) {
super(error);
}
}
테스트
package com.song.test;
import java.util.Scanner;
public class Test {
private static Scanner scanner;
private static Sedan sedan;
private static Bus bus;
private static Truck truck;
private static Car[] cars;
static {
scanner = new Scanner(System.in);
sedan = new Sedan("小轿车","黑色");
bus = new Bus("大巴车","绿色");
truck = new Truck("卡车","蓝色",2);
cars = new Car[3];
cars[0] = sedan;
cars[1] = bus;
cars[2] = truck;
}
public void showCars() {
System.out.println("欢迎使用本汽车管理系统");
System.out.println("车辆名称\t\t车辆颜色\t\t座位数\t\t载重量");
for(Car car:cars) {
if(car instanceof Truck) {
Truck truck = (Truck)car;
System.out.println(car.getName()+"\t\t"+car.getColor()+"\t\t"+car.seatNum()+"\t\t"+truck.getweight());
}else {
System.out.println(car.getName()+"\t\t"+car.getColor()+"\t\t"+car.seatNum()+"\t\t不能拉货");
}
}
System.out.println("1.小轿车\t2.大巴车\t3.卡车");
System.out.print("请选择要修改的车辆:");
int num = scanner.nextInt();
switch(num) {
case 1:
update("sedan");
break;
case 2:
update("bus");
break;
case 3:
update("truck");
break;
default:
System.out.println("车辆不存在!");
break;
}
}
public void update(String type) {
String name = null;
String color = null;
if(type.equals("sedan")) {
System.out.print("输入车辆名称");
name = scanner.next();
System.out.print("输入车辆颜色");
color = scanner.next();
Sedan sedan = new Sedan(name,color);
cars[0] = sedan;
}
if(type.equals("bus")) {
System.out.print("输入车辆名称");
name = scanner.next();
System.out.print("输入车辆颜色");
color = scanner.next();
Bus bus = new Bus(name,color);
cars[1] = bus;
}
if(type.equals("truck")) {
System.out.print("输入车辆名称");
name = scanner.next();
System.out.print("输入车辆颜色");
color = scanner.next();
System.out.print("输入载重量");
int weight = scanner.nextInt();
if(weight > 12) {
CarException carException = new CarException("卡车的载重量不能超过12吨");
try {
throw carException;
} catch (CarException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return;
}
}
Truck truck = new Truck(name,color,weight);
cars[2] = truck;
}
showCars();
}
public static void main(String[] args) {
Test test = new Test();
test.showCars();
}
}
객체 클래스, 래퍼 클래스, 인터페이스 및 예외를 포함하는 객체 지향의 고급 부분입니다. Object 클래스는 모든 Java 클래스의 상위 클래스로 Java 시스템의 기본 정보를 정의하며 상속을 통해 Java의 각 클래스로 전달되며, 전체 Java 시스템은 메소드 재 작성 및 다형성을 통해 강력한 유연성을 가지고 있습니다.
래핑 클래스는 Java가 기본 데이터 유형에 대한 캡슐화를 제공하는 클래스 집합으로,이를 통해 기본 데이터 유형을 객체로 변환 할 수 있습니다. 이는 객체 지향 프로그래밍에서 매우 중요합니다.
인터페이스는 추상 클래스의 확장이며 Java에서 다형성을 달성하는 중요한 방법으로, 프로그램의 결합을 줄이고 프로그램을보다 유연하고 변경 가능하게 만들 수 있습니다. 인터페이스는 부품과 동일하며 이러한 부품을 자유롭게 조립하고 통합 할 수 있습니다.
Exception은 Java에서 오류를 처리하기위한 메커니즘입니다. 또한 객체 지향적 사고를 기반으로합니다. 오류는 객체로 추상화 된 다음 처리됩니다. 여기서주의해야 할 점은 예외, try, catch, finally, throw와 관련된 여러 키워드를 사용하는 것입니다. , 던졌습니다.