zoukankan      html  css  js  c++  java
  • 69期-Java SE-011_面向对象-5-001-004

    ### 异常是 Java 处理错误(运行时错误)的机制,出现错误的地方,Java 会自动生成一个异常对象,该对象包含了异常的各种信息,并且抛出该对象,交给可以处理该错误的代码来进行处理。
    
    ### 异常类
    
    最顶端的类是 Throwable,是所有异常类的根结点。
    
    Throwable有两个直接子类:Error 和 Exception。
    
    Error 表示系统错误,程序无法解决,Exception 指程序运行时出现的错误,程序可以处理,所有的异常类都存放在java.lang包中。
    
    Error 常见的子类包括 VirtualMachineError、AWTError、IOError。
    
    Exception 常见的子类主要包含 IOException 和 RuntimeException,IOException 存放在 java.io 包中,RuntimeException 存放在java.lang 包中。
    
    IOException 的常用子类包括FileLockInterruptionException、FileNotFoundException、FilerException,这些异常通常都是在处理 IO 流进行文件传输时发生的错误。
    
    RuntimeException 常用子类:
    
    - ArithmeticException:表示数学运算异常。
    - ClassNotFouneException:表示类未定义异常。
    - IllegalArgumentException:表示参数格式错误异常。
    - ArrayIndexOutOfBoundsException:表示数组下标越界异常。
    - NullPointerException:表示空指针异常。
    - NoSuchMethodException:表示方法未定义异常。
    - NumberFormatException:表示将其他数据类型转为数值类型时的不匹配异常。
    
    ### 综合练习
    
    使用本章所学知识,重点包括封装、继承、多态、抽象、接口来完成一个汽车查询系统。
    
    需求描述:共有3种类型的汽车:小轿车、大巴车、卡车,其中小轿车是4座、大巴车是53座、卡车是2座,要求使用封装、继承、抽象来完成车辆的定义。
    
    可以对汽车信息作出修改,卡车可以运货但是载重量不能超过12吨,使用自定义异常来处理错误,小轿车和大巴车没有此功能,要求使用接口来实现。

     MyException.java

    public class MyException extends Exception {
        public MyException(String error) {
            super(error);
        }
    }

    Test.java

    public class Test {
        public static void main(String[] args) throws Exception {
            test();
        }
        
        public static void test() throws Exception{
            String str = "Java";
            int num = Integer.parseInt(str);
        }
    }

    Test2.java

    public class Test2 {
        public static void main(String[] args) {
            Test2 test2 = new Test2();
            try {
                System.out.println(test2.add("10"));
            } catch (MyException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
        public int add(Object object) throws MyException {
            //判断object是否为整数
            if(object instanceof Integer) {
                int num = (int)object;
                return num++;
            }else {
                String error = "传入的参数不是整数类型";
                throw new MyException(error);
            }
        }
    }

     

    Bus.java

    package demo;
    
    public class Bus extends Car {
    
        public Bus(String name, String color) {
            super(name, color);
        }
    
        @Override
        public String seatNum() {
            // TODO Auto-generated method stub
            return "53座";
        }
    
    }

    Car.java

    package demo;
    
    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 abstract String seatNum();
        public Car(String name, String color) {
            super();
            this.name = name;
            this.color = color;
        }
    }

    CarException.java

    package demo;
    
    public class CarException extends Exception {
        public CarException(String error) {
            super(error);
        }
    }

    Container.java

    package demo;
    
    public interface Container {
        public int getweight();
    }

    Sedan.java

    package demo;
    
    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座";
        }
    
    }

    Test.java

    package demo;
    
    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("车辆名称		车辆颜色		座位数		载重量");
            Car car = null;
            for(int i = 0; i < cars.length;i++) {
                car = cars[i];
                if(car instanceof Sedan) {
                    Sedan sedan = (Sedan)car;
                    System.out.println(sedan.getName()+"		"+sedan.getColor()+"		"+sedan.seatNum());
                }
                if(car instanceof Bus) {
                    Bus bus = (Bus)car;
                    System.out.println(bus.getName()+"		"+bus.getColor()+"		"+bus.seatNum());
                }
                if(car instanceof Truck) {
                    Truck truck = (Truck)car;
                    System.out.println(truck.getName()+"		"+truck.getColor()+"		"+truck.seatNum()+"		"+truck.getweight());
                }
            }
        }
        public static void main(String[] args) {
            Test test = new Test();
            test.showCars();
        }
    }

    Truck.java

    package demo;
    
    public class Truck extends Car implements Container {
        private int weight;
        public Truck(String name,String color,int weigth) {
            super(name,color);
            this.weight = weigth;
        }
        @Override
        public String seatNum() {
            // TODO Auto-generated method stub
            return "2座";
        }
    
        @Override
        public int getweight() {
            // TODO Auto-generated method stub
            return this.weight;
        }
    
    }
  • 相关阅读:
    10 种保护 Spring Boot 应用的绝佳方法
    Redis 如何分析慢查询操作?
    Spring Boot 主类及目录结构介绍
    Redis 再牛逼,也得设置密码!!
    Spring Data Redis 详解及实战一文搞定
    Spring Boot Redis Cluster 实战干货
    超详细的 Redis Cluster 官方集群搭建指南
    Redis Linux 安装运行实战全记录
    hdu 4790 Just Random (思路+分类计算+数学)
    poj 1328 Radar Installation(贪心)
  • 原文地址:https://www.cnblogs.com/HiJackykun/p/11172438.html
Copyright © 2011-2022 走看看