加载中...

《Java程序设计》试验九-内部类和异常类


前言

记录一下做过的题目,虽然作为入门题目很简单,不过还是可以学到东西的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 类的子类。
  • 使用 trycatch 关键字可以捕获异常。 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 语句来声明它们。

  • 匿名类只有两种使用方式:

    • 继承一个类并重写父类的方法。
    • 实现一个接口并重写接口的方法。
  • 匿名类主要用于在我们需要的时候创建一个对象来执行特定的任务,让代码看起来更简洁。


文章作者: 心意
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 心意 !
评论
  目录