Java 教程

Java 控制语句

面向对象编程

Java 内置类

Java 文件处理

Java 错误与异常

Java 多线程

Java 同步

Java 网络编程

Java 集合

Java 接口

Java 数据结构

Java 集合算法

高级 Java

Java 杂项

Java APIs & 框架

Java 类引用

Java 有用资源

Java - instanceof 关键字



Java instanceof 关键字是一个运算符,仅用于对象引用变量。此运算符检查 Java 对象是否属于特定类型(类类型或接口类型)。

语法

以下是 Java 编程中 instanceof 运算符的语法。

( Object reference variable ) instanceof (class/interface type)

如果运算符左侧变量引用的对象通过右侧类/接口类型的 IS-A 检查,则结果为 true。

IS-A 关系

IS-A 的意思是:此对象是一种那种对象。让我们看看如何使用extends关键字实现继承。

public class Animal {
}

public class Mammal extends Animal {
}

public class Reptile extends Animal {
}

public class Dog extends Mammal {
}

现在,根据上面的例子,在面向对象的术语中,以下是正确的:

  • Animal 是 Mammal 类的超类。
  • Animal 是 Reptile 类的超类。
  • Mammal 和 Reptile 是 Animal 类的子类。
  • Dog 是 Mammal 和 Animal 类的子类。

现在,如果我们考虑 IS-A 关系,我们可以说:

  • Mammal IS-A Animal
  • Reptile IS-A Animal
  • Dog IS-A Mammal
  • 因此:Dog IS-A Animal

使用 extends 关键字,子类将能够继承超类的所有属性,除了超类的私有属性。

我们可以使用 instance 运算符确保 Mammal 实际上是一个 Animal。

例子

class Animal {
}

class Mammal extends Animal {
}

class Reptile extends Animal {
}

public class Dog extends Mammal {

   public static void main(String args[]) {
      Animal a = new Animal();
      Mammal m = new Mammal();
      Dog d = new Dog();

      System.out.println(m instanceof Animal);
      System.out.println(d instanceof Mammal);
      System.out.println(d instanceof Animal);
   }
}

输出

true
true
true

由于我们已经很好地理解了extends关键字,让我们看看如何使用implements关键字获得 IS-A 关系。

通常,implements关键字与类一起使用以继承接口的属性。接口永远不能被类扩展。

例子

public interface Animal {
}

public class Mammal implements Animal {
}

public class Dog extends Mammal {
}

instanceof 关键字

让我们使用instanceof运算符来检查 Mammal 是否实际上是 Animal,以及 dog 是否实际上是 Animal。

例子

interface Animal{}
class Mammal implements Animal{}

public class Dog extends Mammal {

   public static void main(String args[]) {
      Mammal m = new Mammal();
      Dog d = new Dog();

      System.out.println(m instanceof Animal);
      System.out.println(d instanceof Mammal);
      System.out.println(d instanceof Animal);
   }
}

输出

true
true
true
java_basic_syntax.htm
广告