题解 | #定义打印方法#

定义打印方法

http://www.nowcoder.com/practice/50b50ae39d65415a9fd70601d711e5af

多态性,是子类的对象赋给了父类的引用,使用的前提是有继承关系、有方法的重写, 本题中的三个类都重写了toString()方法那么很显然,需要找到一个类,是本题中三个类的共同父类,又有toString()方法,并且有forName()方法和newInstance()方法,以便在第10行的print()中能传入一个对象,那么去哪里找这样的类呢?

不用想了,平时就是用 Object类它是所有类的父类,又拥有各种各样的方法

  • 找到该类以后,把这个类的对象 Object obj 作为参数传给 print(),也就是 “父类的引用”,
  • 这样,在 Class.forName(className).newInstance() 时,就会帮助创建出 “子类的对象”

从而实现 “父类的引用指向子类的对象”,即多态性

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();
            // print就是需要你定义的方法
            print(Class.forName(className).newInstance());
        }
    }

    // write your code here......
    
    // 多态性,是子类的对象赋给了父类的引用,使用的前提是有继承关系、有方法的重写
    // 本题中的三个类都重写了toString()方法
    // 那么很显然,需要找到一个类,是本题中三个类的共同父类,又有toString()方法
    // 并且有forName()方法和newInstance()方法,以便在第10行的print()中能传入一个对象
    // 不用想了,平时就是用 Object类,它是所有类的父类,又拥有各种各样的方法

    // 找到该类以后,把这个类的对象作为参数传给print(),也就是“父类的引用”,
    // 并且在方法体中应用上三个子类都重写了的方法来实现需求
    // 这样,在Class.forName(className).newInstance()时,
    // 就会帮助创建出“子类的对象”
    //
    // 从而实现“父类的引用指向子类的对象”,即多态性
    
    public static void print(Object obj) {
        System.out.print(obj.toString());
    }

}

class First {
    public String toString() {
        return "First";
    }
    
}

class Second {
    public String toString() {
        return "Second";
    }
}

class Third {
    public String toString() {
        return "Third";
    }
}
全部评论

相关推荐

Pandaileee:校友加油我现在也只有一个保底太难了
点赞 评论 收藏
分享
11-09 14:54
已编辑
华南农业大学 产品经理
大拿老师:这个简历,连手机号码和照片都没打码,那为什么关键要素求职职位就不写呢? 从上往下看,都没看出自己到底是产品经理的简历,还是电子硬件的简历? 这是一个大问题,当然,更大的问题是实习经历的描述是不对的 不要只是去写实习流程,陈平,怎么去开会?怎么去讨论? 面试问的是你的产品功能点,是怎么设计的?也就是要写项目的亮点,有什么功能?这个功能有什么难处?怎么去解决的? 实习流程大家都一样,没什么优势,也没有提问点,没有提问,你就不得分 另外,你要明确你投的是什么职位,如果投的是产品职位,你的项目经历写的全都是跟产品无关的,那你的简历就没用 你的面试官必然是一个资深的产品经理,他不会去问那些计算机类的编程项目 所以这种四不像的简历,在校招是大忌
点赞 评论 收藏
分享
59 1 评论
分享
牛客网
牛客企业服务