当前位置: 首页 > 编程笔记 >

Java instanceof关键字的的进一步理解

都飞跃
2023-03-14
本文向大家介绍Java instanceof关键字的的进一步理解,包括了Java instanceof关键字的的进一步理解的使用技巧和注意事项,需要的朋友参考一下

instanceof是Java的一个二元操作符,和==,>,<是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。举个例子:


    String s = "I AM an Object!";

    boolean isObject = s instanceof Object;

 

我们声明了一个String对象引用,指向一个String对象,然后用instancof来测试它所指向的对象是否是Object类的一个实例,显然,这是真的,所以返回true,也就是isObject的值为True。
instanceof有一些用处。比如我们写了一个处理账单的系统,其中有这样三个类:


    public class Bill {//省略细节}

    public class PhoneBill extends Bill {//省略细节}

    public class GasBill extends Bill {//省略细节}

 

在处理程序里有一个方法,接受一个Bill类型的对象,计算金额。假设两种账单计算方法不同,而传入的Bill对象可能是两种中的任何一种,所以要用instanceof来判断:


public double calculate(Bill bill) {

    if (bill instanceof PhoneBill) {

        //计算电话账单

    }

    if (bill instanceof GasBill) {

        //计算燃气账单

    }

    ...

}

这样就可以用一个方法处理两种子类。

然而,这种做法通常被认为是没有好好利用面向对象中的多态性。其实上面的功能要求用方法重载完全可以实现,这是面向对象变成应有的做法,避免回到结构化编程模式。只要提供两个名字和返回值都相同,接受参数类型不同的方法就可以了:


public double calculate(PhoneBill bill) {

    //计算电话账单

}

public double calculate(GasBill bill) {

    //计算燃气账单

}

 类似资料:
  • 本文向大家介绍static 关键字的理解?相关面试题,主要包含被问及static 关键字的理解?时的应答技巧和注意事项,需要的朋友参考一下 static 关键字主要有以下四种使用场景: 修饰成员变量和成员方法: 被 static 修饰的成员属于类,不属于单个这个类的某个对象,被类中所有对象共享,可以并且建议通过类名调用。被static 声明的成员变量属于静态成员变量,静态变量 存放在 Java 内

  • 本文向大家介绍this 关键字的理解?相关面试题,主要包含被问及this 关键字的理解?时的应答技巧和注意事项,需要的朋友参考一下 this关键字用于引用类的当前实例。 例如: 在上面的示例中,this关键字用于两个地方: this.employees.length:访问类Manager的当前实例的变量。 this.report():调用类Manager的当前实例的方法。 此关键字是可选的,这意味

  • 本文向大家介绍super 关键字的理解相关面试题,主要包含被问及super 关键字的理解时的应答技巧和注意事项,需要的朋友参考一下 super 关键字 super关键字用于从子类访问父类的变量和方法。 例如: 在上面的例子中,Sub 类访问父类成员变量 number 并调用其其父类 Super 的 方法。 使用 this 和 super 要注意的问题: 在构造器中使用 调用父类中的其他构造方法时,

  • 本文向大家介绍final 关键字的理解相关面试题,主要包含被问及final 关键字的理解时的应答技巧和注意事项,需要的朋友参考一下 final关键字主要用在三个地方:变量、方法、类。 1. 对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。 2. 当用final修饰一个类时,表明这个类不能被继承。f

  • 本文向大家介绍Java中的同步关键字,包括了Java中的同步关键字的使用技巧和注意事项,需要的朋友参考一下 当我们在程序中启动两个或多个线程时,可能会出现多个线程尝试访问同一资源,最终由于并发问题,它们可能产生无法预料的结果的情况。例如,如果多个线程试图在同一文件中写入数据,则它们可能会破坏数据,因为其中一个线程可以覆盖数据,或者一个线程同时打开同一文件时,另一个线程可能正在关闭同一文件。 因此,

  • 进一步的相关内容 请同学网上搜寻相关资料学习: gcc tools相关文档 版本管理软件(CVS、SVN、GIT等)的使用 …