错题-Java继承和多态之子类对象特点

/**
 * 任务:使用 instanceof 运算符判断指定对象是否为特定类的一个实例
 */
class Person{}
class Students extends Person{}
class Sch extends Students{}
public class Demos{
    public static void main(String[] args) {
        // 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
        /********* Begin *********/
        // 创建一个Students对象,判断该对象是否是Person类的实例
        //如果是输出:true,否则为false
        Students s=new Students();
        boolean result = s instanceof Person;
        System.out.println(result);
        // 创建一个Sch对象,判断该对象是否是Person类的实例
        // 输出判断结果
        Sch sch =new Sch();
        boolean result2 = sch instanceof Person;
        System.out.println(result2);
        // 创建一个Person对象,判断该对象是否是Students类的实例
        // 输出判断结果
        Person p =new Person();
        boolean result3 = p instanceof Students;
        System.out.println(result3);
        /********** End **********/
    }
}

      

        boolean result2 = Sch(不应该用Sch,应该用创建的sch) instanceof Person;

        

        Sch sch =new Sch();//不要再忘记括号了!

instanceof 运算符

Java 中的 instanceof 运算符是用来在运行时判断对象是否是特定类的一个实例。instanceof 通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。

用法:

 
  1. boolean result = Object instanceof Class;

名词介绍:

  • result:布尔类型;
  • Object:必选项。任意对象表达式;
  • Class:必选项。任意已定义的对象类。 说明: 如果 Object 是 Class 的一个实例,则 instanceof 运算符返回 true;如果 Object 不是指定类的一个实例,或者 Object 是 null,则返回 false。

需要注意的是 instanceof 在 Java 的编译状态和运行状态是有区别的:

在编译状态中,Class 可以是 Object 对象的父类、自身类、子类。在这三种情况下 Java 编译时不会报错。

在运行转态中,Class 可以是 Object 对象的父类,自身类,不能是子类。在前两种情况下 result 的结果为 true,最后一种为 false。但是 class 为子类时编译不会报错,运行结果为 false。

例子:

 
  1. class instanceOfDemo{
        public static void main(String []args){
            instanceOfDemo t=new instanceOfDemo();
            if(t instanceof instanceOfDemo){
                System.out.println("t是instanceOfDemo的实例");
            }
        }
    }

执行结果:

  1. t是instanceOfDemo的实例

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值