前言
记录一下做过的题目,虽然作为入门题目很简单,不过还是可以学到东西的hh。
程序设计一 内部类和异常类:
题目:
车站检查危险品,如果发现危险品,将发出警告。
(1)编写一个Exception的子类,DangerException,该子类可以用于创建异常对象,该异常对象调用toShow()方法,输出“属于危险品”;
(2)编写一个Goods类,具有产品的名字和是否危险两种属性,可以在初始化时,设置产品的名字,并具备方法能够修改产品是否危险,查看是否危险,和设置产品的名字;
(3)编写一个Machine类,该类的方法checkBag(Goods goods)当发现参数goods是危险品的时候,(即goods的isDanger的属性的值是true的时候)抛出DangerException异常;
(4)程序在主类的main方法中,创建苹果和炸药,苹果为安全,炸药为危险,通过try-catch语句的try部分,让Machine类的实例checkBag(Goods goods)方法,查看苹果和炸药,一旦发现危险品,就在try-catch语句的catch部分处理危险品。
DangerException类
package org.实验9.IsDanger;
public class DangerException extends Exception{
private String name;
DangerException(String name){
this.name=name;
}
public String toShow(){
return name+"属于危险品";
}
}
Goods类
package org.实验9.IsDanger;
public class Goods {
private String name;
private Boolean isDanger;
Goods(){}
Goods(String name){
this.name=name;
}
public void setDanger(Boolean isDanger){
this.isDanger=isDanger;
}
public void setName(String name){
this.name=name;
}
public Boolean getIsDanger(){
return isDanger;
}
public String getName(){
return name;
}
}
Machine类
package org.实验9.IsDanger;
import org.实验9.IsDanger.DangerException;
import org.实验9.IsDanger.Goods;
public class Machine {
public void checkBag(Goods goods) throws DangerException {
if(goods.getIsDanger()){
throw new DangerException(goods.getName());
}
}
}
Main类
package org.实验9.IsDanger;
import org.实验9.IsDanger.DangerException;
import org.实验9.IsDanger.Goods;
import org.实验9.IsDanger.Machine;
public class Main {
public static void main(String[] args){
Goods ap=new Goods("苹果");
ap.setDanger(false);
Goods zy=new Goods("炸药");
zy.setDanger(true);
Machine mi=new Machine();
try{
mi.checkBag(ap);
System.out.println(ap.getName()+"不属于危险品");
}
catch (DangerException u){
System.out.println(u.toShow());
}
try{
mi.checkBag(zy);
System.out.println(zy.getName()+"不属于危险品");
}
catch (DangerException u){
System.out.println(u.toShow());
}
}
}
小tips:
- Java中所有的异常类都是从
java.lang.Excption
类继承的子类。 Excption
类是Throwable
类的子类。- 使用
try
和catch
关键字可以捕获异常。catch
语句包含要捕获异常类型的声明。 - 如果一个方法没有捕获到一个 检查性异常 ,那么该方法必须使用
throws
关键字来声明。throws
关键字放在方法签名的尾部。也可以使用throw
关键字抛出一个异常,无论它是新实例化的还是刚捕获的。 - 一个方法可以 声明 (声明用
throws
)抛出多个异常,多个异常之间用逗号隔开。
程序设计二 匿名类:
题目:
设计一个天气预报的程序:
(1)设计一个面向接口的类,这个类中有一个可以播报天气预报的方法,天气预报方法的输入参数是一个接口参数;
(2)设计一个接口,规定不同的气象状态的播报形式;
(3)请通过匿名类,来实现分别播报晴天、下雨、雪天的天气状况。
天气状态接口
package org.实验9.WeaTher;
public interface weatherstate {
public void showState();
public void showDate();
}
面向接口的类
package org.实验9.WeaTher;
public class tianqiyubao {
public void yubaoweather(weatherstate ws){
ws.showDate();
ws.showState();
}
}
Main类
package org.实验9.WeaTher;
public class Main {
public static void main(String[] args){
tianqiyubao tq=new tianqiyubao();
tq.yubaoweather(new weatherstate() {
@Override
public void showState() {
System.out.println("阴转小雨,请注意带伞");
}
@Override
public void showDate() {
System.out.println("2022-10-14");
}
}
);
tq.yubaoweather(new weatherstate() {
@Override
public void showState() {
System.out.println("晴,空气清新");
}
@Override
public void showDate() {
System.out.println("2022-10-15");
}
});
tq.yubaoweather(new weatherstate() {
@Override
public void showState() {
System.out.println("多云转雪,请注意保暖");
}
@Override
public void showDate() {
System.out.println("2022-10-16");
}
});
}
}
小tips:
-
Java
中可以实现一个类中包含另外一个类,且不需要提供任何的类名 直接实例化 。 -
匿名类是不能有名字的类,它们不能被引用,只能在创建时用
new
语句来声明它们。 -
匿名类只有两种使用方式:
- 继承一个类并重写父类的方法。
- 实现一个接口并重写接口的方法。
-
匿名类主要用于在我们需要的时候创建一个对象来执行特定的任务,让代码看起来更简洁。