美文网首页
面试总结(Day2-Java基础知识)

面试总结(Day2-Java基础知识)

作者: JackDaddy | 来源:发表于2020-03-12 15:32 被阅读0次
    谈谈对java多态的理解?

    多态是指父类的某个方法被子类重写时,可以产生自己的功能行为,同一个操作作用于不同对象,可以有不同的解释,产生不同的执行结果。

    多态的三个必要条件:

    1. 继承父类
    2. 重写父类的方法
    3. 父类的引用指向子类对象
    什么是多态

    面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的知识点。

    多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)

    实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。

    多态的作用:消除类型之间的耦合关系。

    现实中,关于多态的例子不胜枚举。比方说按下 F1 键这个动作,如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;如果当前在 Word 下弹出的就是 Word 帮助;在 Windows 下弹出的就是 Windows 帮助和支持。同一个事件发生在不同的对象上会产生不同的结果。

    通过静态内部类实现单例模式有哪些优点?
    1. 不用 synchronized ,节省时间。
    2. 调用 getInstance() 的时候才会创建对象,不调用不创建,节省空间,这有点像传说中的懒汉式。
    静态代理和动态代理的区别,什么场景使用?

    静态代理与动态代理的区别在于代理类生成的时间不同,即根据程序运行前代理类是否已经存在,可以将代理分为静态代理和动态代理。如果需要对多个类进行代理,并且代理的功能都是一样的,用静态代理重复编写代理类就非常的麻烦,可以用动态代理动态的生成代理类。

    静态代理使用场景:四大组件同AIDL与AMS进行跨进程通信
    动态代理使用场景:Retrofit使用了动态代理极大地提升了扩展性和可维护性。

    代码的坏味道:
    1、代码重复:

    代码重复几乎是最常见的异味了。他也是Refactoring 的主要目标之一。代码重复往往来自于copy-and-paste 的编程风格。

    2、方法过长:

    一个方法应当具有自我独立的意图,不要把几个意图放在一起。

    3、类提供的功能太多:

    把太多的责任交给了一个类,一个类应该仅提供一个单一的功能。

    4、数据泥团:

    某些数据通常像孩子一样成群玩耍:一起出现在很多类的成员变量中,一起出现在许多方法的参数中…..,这些数据或许应该自己独立形成对象。 比如以单例的形式对外提供自己的实例。

    5、冗赘类:

    一个干活不多的类。类的维护需要额外的开销,如果一个类承担了太少的责任,应当消除它。

    6、需要太多注释:

    经常觉得要写很多注释表示你的代码难以理解。如果这种感觉太多,表示你需要Refactoring。

    相关文章

      网友评论

          本文标题:面试总结(Day2-Java基础知识)

          本文链接:https://www.haomeiwen.com/subject/lsnejhtx.html