题解 | #类型判断#

类型判断

http://www.nowcoder.com/practice/97223208ca954e67832da716b46e5d72

import java.util.Scanner;

public class Main {

public static void main(String[] args) throws Exception {
    Scanner scanner = new Scanner(System.in);
    while (scanner.hasNext()) {
        String className = scanner.next();
        Base obj = (Base) Class.forName(className).newInstance();
        System.out.println(getClassName(obj));
    }
}

public static String getClassName(Base obj) {

    //write your code here......
    /*instanceof关键字的使用,它是多态性中父类引用向下转型的前置判断手段.
    	有效控制了类的转换异常ClassCastException的出现*/
    if(obj instanceof Sub1){
        return "Sub1";
    }else if(obj instanceof Sub2){
        return "Sub2";
    }else{
        return "Base";
    }

}

}

class Base { //父类

}

class Sub1 extends Base { //子类1

}

class Sub2 extends Base { //子类2

}

全部评论
什么是面向对象的多态性?简单来说就是父类引用指向子类的对象。在调用子父类的同名同参方法时,实际执行的是子类的重写方法。这也被称为虚拟方法调用。同时这也是多态的动态绑定的发生原理,在编译时看赋值号的左侧类的类型,实际运行的时候看的是赋值号右侧的类的类型。在系统没有实际运行时,编译器也不知道实际执行的是哪一种方法,这被称为动态绑定。
1 回复 分享
发布于 2022-03-30 21:24

相关推荐

大愣子衰哥:老哥,是正式还是实习
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务