Java之instanceof关键字

た 入场券 2022-11-27 12:25 292阅读 0赞

为了更好的说明,我下面通过代码举例说明。(Person有两个子类Man和Woman)

1、为什么java要使用instanceof关键字?
答:java在向下转型的过程中,运行过程中可能出现ClassCastException(类型转换异常),而instanceof就是来避免这个异常的。

2、使用情境:为了避免在向下转型时出现ClassCastException的异常我们在向下转型之前,先进行instanceof的判断。 一旦是返回true就进行向下转型,如果返回false就不进行向下转型。

3、如果a instanceof A返回true;那么a instanceof B也返回true。其中B类是A类的父类

  1. package com.atguigu.java2;
  2. public class Person {
  3. String name;
  4. int age;
  5. public void eat() {
  6. System.out.println("人吃饭!");
  7. }
  8. public void walk() {
  9. System.out.println("人走路!");
  10. }
  11. }
  12. package com.atguigu.java2;
  13. public class Man extends Person{
  14. boolean isSmoking;
  15. @Override
  16. public void eat() {
  17. System.out.println("男人吃饭!");
  18. }
  19. @Override
  20. public void walk() {
  21. System.out.println("男人走路!");
  22. }
  23. public void earnMoney() {
  24. System.out.println("男人挣钱养家!");
  25. }
  26. }
  27. package com.atguigu.java2;
  28. public class Woman extends Person{
  29. boolean isBeauty;
  30. @Override
  31. public void eat() {
  32. System.out.println("女人少吃,减肥!");
  33. }
  34. @Override
  35. public void walk() {
  36. System.out.println("女人窈窕的走路!");
  37. }
  38. public void goShopping() {
  39. System.out.println("女人喜欢购物!");
  40. }
  41. }
  42. package com.atguigu.java2;
  43. public class PersonTest {
  44. public static void main(String[] args) {
  45. //对象的多态性:父类引用指向子类对象
  46. Person p1 = new Man();
  47. if(p1 instanceof Woman) {
  48. Woman w1 = (Woman)p1;
  49. w1.goShopping();
  50. System.out.println("************woman***************");
  51. }
  52. if(p1 instanceof Man) {
  53. Man w1 = (Man)p1;
  54. w1.earnMoney();
  55. System.out.println("************man***************");
  56. }
  57. if(p1 instanceof Person) {
  58. System.out.println("************Person***************");
  59. }
  60. if(p1 instanceof Object) {
  61. System.out.println("************Object***************");
  62. }
  63. }
  64. }

调试结果
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,292人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JavaSEinstanceof关键字

    instanceof 是 Java 的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型。 ![在这里插入图片描述][wate

    相关 instanceof关键字

    instanceof关键字的使用 a instanceof A:判断对象a是否是类A的实例。如果是,返回true;如果不是,返回false。 使用情境:为了避免在向下转型时

    相关 instanceof 关键字

    java中,instanceof运算符的前一个操作符是一个引用变量,后一个操作数通常是一个类(可以是接口),用于判断前面的对象是否是后面的类,或者其子类、实现类的实例。如果是返