Java构造方法 super 及自定义异常throw合集详解用法

Java构造方法 super 及自定义异常 throw 合集详解用法

构造方法 super

Java中一个类可以有多个构造方法,开发者可以选择不同的构造方法来满足不同的需求,但是必须保证类中至少存在一个构造方法。在子类构造方法中除了继承父类构造方法外,还有另外一种重要的方式——调用父类构造方法,可以使用super()super(参数)语句来实现。

super()语句用于调用父类无参构造方法,它必须是子类构造方法的第一条语句,如果没有显式地使用super(),Java编译器会自动加上这条语句。

下面的代码展示了如何在子类构造方法中调用父类构造方法:

public class Animal {
    private String name;
    public Animal(String name) {
        this.name = name;
    }
}

public class Dog extends Animal {
    private String breed;
    public Dog(String name, String breed) {
        super(name);
        this.breed = breed;
    }
}

在上面的代码中,Dog类继承了Animal类,Dog类中的构造方法使用super(name)语句调用了Animal类中的构造方法,从而为Dog对象的name属性赋值。

自定义异常 throw

Java中,我们可以使用内置的异常类来处理错误,例如NullPointerException、ArrayIndexOutOfBoundsException等。但在实际开发中,我们常常需要自定义异常来处理更复杂的错误情况,这时就需要使用throw语句来抛出异常。

自定义异常通常需要继承于Exception类或其子类,且必须实现Exception类或其子类中定义的至少一个构造方法。

下面的代码展示了如何自定义异常类:

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

public class Test {
    public static void main(String[] args) {
        int i = 1;
        try {
            if (i == 1) {
                throw new MyException("发生了自定义异常。");
            }
        } catch (MyException e) {
            e.printStackTrace();
        }
    }
}

在上面的代码中,MyException类继承了Exception类,并实现了构造方法MyException(String message)。在Test类的main方法中,我们使用throw语句抛出了一个MyException类型的异常。当i等于1时,程序会执行throw new MyException("发生了自定义异常。")语句,从而触发MyException类型的异常处理块。

示例

示例1:使用super语句调用父类构造方法

public class Car {
    private String brand;
    public Car(String brand) {
        this.brand = brand;
    }
}

public class Bmw extends Car {
    private String model;
    public Bmw(String brand, String model) {
        super(brand);
        this.model = model;
    }
}

public class Test {
    public static void main(String[] args) {
        Bmw bmw = new Bmw("BMW", "X6");
        System.out.println(bmw);
    }
}

在上面的代码中,我们定义了一个Bmw类来继承Car类,并添加了一个字符串类型的model属性。在Bmw类的构造方法中,我们使用super(brand)语句调用了Car类中的构造方法,初始化了Bmw对象的brand属性。在Test类的main方法中,我们使用Bmw类创建一个Bmw对象,并打印对象的信息。

示例2:使用throw语句抛出自定义异常

public class ScoreException extends Exception {
    public ScoreException(String message) {
        super(message);
    }
}

public class Test {
    public static void main(String[] args) {
        int score = 85;
        try {
            if (score < 90) {
                throw new ScoreException("分数不合格,需要重修。");
            }
        } catch (ScoreException e) {
            e.printStackTrace();
        }
    }
}

在上面的代码中,我们定义了一个ScoreException类来继承Exception类,并实现了构造方法ScoreException(String message)。在Test类的main方法中,我们定义了一个int类型的score变量并赋值为85,然后使用throw语句抛出了一个ScoreException类型的异常。当score小于90时,程序会执行throw new ScoreException("分数不合格,需要重修。")语句,从而抛出ScoreException异常,并打印堆栈信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java构造方法 super 及自定义异常throw合集详解用法 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • JSP 中Spring的Resource类读写中文Properties实例代码

    当 JSP 中使用 Spring 框架时,常常需要读写中文 Properties 文件。在这种情况下,可以使用 Spring 框架中的 Resource 类来实现文件的读取和写入。下面是详细的攻略: 步骤一:导入 Spring 框架 在 JSP 中使用 Spring 框架时,需要先导入 Spring 相关的 jar 包。一般来说,需要导入以下 jar 包: …

    Java 2023年6月15日
    00
  • Java中类与对象的相关知识点总结

    下面是关于“Java中类与对象的相关知识点总结”的详细攻略。 什么是Java中类与对象 Java是一种基于对象的编程语言,类是Java中的基本概念。类是Java中定义对象的模板,由属性和方法组成。而对象则是类的实例,具有类中定义的属性和方法。利用类和对象,我们可以很方便地组织代码、实现代码的复用和扩展。 如何定义类 定义类的格式如下: [public] cl…

    Java 2023年5月26日
    00
  • Java中IO流解析及代码实例

    Java中IO流解析及代码实例 什么是IO流? 在计算机的世界里,I/O就是指input/output,表示输入和输出,是计算机和外部世界交互的一种方式。 Java中IO流,就是指为了方便对这种输入输出进行操作而引入了一些类和接口,通常分为字节流和字符流两种类型。 字节流和字符流的区别在于数据的单位不同:字节流以字节为单位进行读写,可以用于读写所有类型的文件…

    Java 2023年5月23日
    00
  • Java中static静态变量的初始化完全解析

    Java中static静态变量的初始化完全解析 在Java中,静态变量(static变量)是独立于对象的变量,它们在类被加载时就被初始化,而不是在每次创建对象时都被初始化。本文将详细介绍Java中静态变量的初始化过程。 静态变量的初始化时机 静态变量是在类加载时被初始化的,具体包括以下3种情况: 类的静态变量在类加载时就初始化 在类的静态变量成员所在的类被初…

    Java 2023年5月26日
    00
  • Sprint Boot @ImportResource使用方法详解

    Spring Boot的@ImportResource注解 在Spring Boot中,@ImportResource注解用于导入XML配置文件。使用@ImportResource注解可以将XML配置文件中定义的bean注册到Spring应用程序上下文中。本文将详细介绍@ImportResource注解的作用和使用方法,并提供两个示例说明。 @ImportR…

    Java 2023年5月5日
    00
  • 使用SpringBoot配置https(SSL证书)

    使用 Spring Boot 配置 HTTPS (SSL 证书) 的完整攻略 在本文中,我们将详细介绍如何使用 Spring Boot 配置 HTTPS (SSL 证书)。我们将介绍 HTTPS 的概念、配置方式和提供两个示例。 HTTPS 概念 HTTPS (Hyper Text Transfer Protocol Secure) 是一种通过 SSL/TL…

    Java 2023年5月15日
    00
  • 老生常谈Java字符串进阶(必看篇)

    老生常谈Java字符串进阶(必看篇) 一、字符串不可变性 1.1 什么是字符串不可变性? Java中的字符串是immutable(不可变)的,即一旦字符串被创建,就不能够被修改。这意味着,每次对字符串进行修改操作时,都会创建一个新的字符串。例如: String str = "hello"; str = str + " world…

    Java 2023年5月26日
    00
  • java算法题解Leetcode763划分字母区间示例

    下面是“java算法题解Leetcode763划分字母区间示例”的完整攻略。 题目描述 给定一个仅包含小写字母的字符串 S,将字符串 S 划分为尽可能多的区间,使得每个字母最多出现在一个区间中,求区间的个数。 解题思路 首先,我们可以使用hashmap记录每个字母最后出现的位置,然后使用两个指针,分别记录当前合法区间的左右端点。 接着,我们遍历字符串S,记录…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部