面向对象

面向对象


Q1:面向过程和面向对象的区别?


面向过程

  • 因为类调用时需要实例化,开销比较大,比较消耗资源,所以性能比面向对象高;例如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发。
  • 由于面向对象有封装、继承、多态的特性,可以设计出耦合的系统,使系统更加灵活、易维护、易复用、易拓展。

Q2:面向对象的特性以及你对这些特性的理解?


封装

封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。简单地说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口。

继承

继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段。

多态

  • 多态是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。如果将对象的方法视为对象向外界提供的服务,那么运行时的多态性可以解释为:当A系统访问B系统提供的服务时,B系统有多种提供服务的方式,但一切对A系统来说都是透明的。

  • 方法重载(overload)实现的是编译时的多态性(也称为前绑定);
    方法重写(override)实现的是运行时的多态性(也称为后绑定)。

  • 运行时的多态是面向对象最精髓的东西,要实现多态需要做两件事:
    1、方法重写:子类继承父类并重写父类中已有的或抽象的方法;
    2、对象造型:用父类型引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为。

    抽象

    ​ 抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。

  • 注意:默认情况下面向对象有 3 大特性,封装、继承、多态,如果面试官问让说出 4 大特性,那么我们就把抽象加上去*


Q3:Java中多态的实现机制?


​ Java中的多态靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象, 而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。


Q4:JDK、JRE、JVM三者间的区别与联系?


  • JDK:功能齐全的 Java SDK,拥有 JRE 所拥有的一切,还有编译器(javac)和工具(如 javadoc 和 jdb),能够创建和编译程序。
  • JRE:Java 运行时环境。它是运行已编译 Java 程序所需的所有内容的集合, 包括 Java 虚拟机(JVM),Java 类库,java 命令和其他的一些基础构件。但是,它不能用于创建新程序。
  • 二者比较
    如果你只是为了运行一下 Java 程序的话,那么你只需要安装 JRE 就可以了。
    如果你需要进行一些 Java 编程方面的工作,那么你就需要安装 JDK 了。
  • 注意*:但是,这不是绝对的。有时,即使你不打算在计算机上进行任何 Java 开发,仍然需要安装 JDK。例如,如果要使用 JSP 部署 Web 应用程序,那么从技术上讲,只是在应用程序服务器中运行 Java 程序。那为什么需要 JDK 呢?因为应用程序服务器会将 JSP 转换为 Java servlet,并且需要使用 JDK 来编译servlet。

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2113132982@qq.com

文章标题:面向对象

文章字数:1.2k

本文作者:南邮石磊

发布时间:2020-09-17, 20:09:08

最后更新:2020-09-20, 15:34:31

原始链接:https://southpost.github.io/2020/09/17/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏