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;
        }
    
    }
  • 相关阅读:
    IDEA tomcat 乱码( Catalina log localhost log server )
    idea的maven项目无法加载resources下的配置或是xml文件
    【MyBatis系列10】MyBatis日志如何做到兼容所有常用的日志框架
    【MyBatis系列9】彻底搞懂MyBatis插件原理及PageHelper原理
    【MyBatis系列8】带你彻底掌握MyBatis的缓存工作原理
    【MyBatis系列7】原来SqlSession只是个甩手掌柜,真正干活的却是Executor等四大对象
    idea 热部署Devtools
    git branch 命令查看分支、删除远程分支、本地分支【转】
    【转】elasticsearch 基础知识汇总
    【转】Elasticsearch究竟要设置多少分片数?
  • 原文地址:https://www.cnblogs.com/HiJackykun/p/11172438.html
Copyright © 2011-2022 走看看