• 每日面试题- 前言+java基础篇(1)面向对象


    前言

    因为我个人目前是学习安全的(以前学过一段时间开发),但是学着学着还是感觉多了解一些代码的知识比较好(或者说各种知识吧,感觉安全要学的全一点,什么都得学一点,样样精通当然是最好的,自己也在这条路上不断前进)。所以空了我会多研究。这个专栏就是为了学习java而准备的。学习java可以有很多方式,写代码是最重要的,而且最好每天都写一点,以前有一段时间不写就发现学过的渐渐就忘了(其实无论学任何一门语言都得好好敲代码,这种东西就得这么学)。除了写代码还可以读源码,自己调试源码,自己给源码打注释,读多了思想也会有升华,理解也会更加透彻,再敲源码会更加得心应手。除此以外我这个专栏的目的就是为了积累面试的知识,其实我既然学安全,可能很多人会说没有必要准备开发的面试题,但是我前阵子准备安全面试的时候,发现准备面试,背面试题发现自己对于整个自己学习的知识框架体系更加全面了,所以我觉得学习一样东西重要的是框架体系的理解,然后再面到点,更加全面,这样才能做到样样精通嘛。其次就是所有的资料基本都是我自己额外找的整理的,还有自己 的理解和整理。时间有限,我直接开始了。希望自己每天都能坚持下去吧。

    一、java基础篇

    其实这一篇没有什么明确的定义(别的专题都可以非常细致的分出小标题),所以我就把平时不知道怎么分类的知识点理出来放在这里了。

    1.1_什么是面向对象

    面向对象是一种思想,世间万物都可以看做一个对象,这里只讨论面向对象编程(OOP),Java 是一个支持并发、基于类和面向对象的计算机编程语言。面向对象软件开发具有以下优点:

    代码开发模块化,更易维护和修改。
    代码复用性强。
    增强代码的可靠性和灵活性。
    增加代码的可读性。
    
    • 1
    • 2
    • 3
    • 4

    1.1.1_请说说面向对象的特征?

    四点:封装、继承、多态、抽象。

    其实说出以上基本4个特征就可以了。这4个特征是最重要的。
    详细说一下这4个特点:
    1)封装

    封装,给对象提供了隐藏内部特性和行为的能力。对象提供一些能被其他对象访问的方法来改变它内部的数据。在 Java 当中,有 4 种修饰符: default(同一包下)publicprivateprotected (父子类中)。每一种修饰符给其他的位于同一个包或者不同包下面对象赋予了不同的访问权限。

    下面列出了使用封装的一些好处:

    通过隐藏对象的属性来保护对象内部的状态。
    提高了代码的可用性和可维护性,因为对象的行为可以被单独的改变或者是扩展。
    禁止对象之间的不良交互提高模块化。

    2)继承

    继承,给对象提供了从基类获取字段和方法的能力(extends)。继承提供了代码的重用性,也可以在不修改类的情况下给现存的类添加新特性。

    3)多态(很多设计模式都会用到这个特征,其实我个人理解就是设计模式其实说白了就是多态)

    多态,是编程语言给不同的底层数据类型做相同的接口展示的一种能力。一个多态类型上的操作,可以应用到其他类型的值上面。举例就是各种设计模式,比如代理(Proxy)模式。

    4)抽象

    抽象,是把想法从具体的实例中分离出来的步骤,因此,要根据他们的功能而不是实现细节来创建类。举个例子:JDBC的BaseDao的抽取。

    Java 支持创建只暴漏接口而不包含方法实现的抽象的类。这种抽象技术的主要目的是把类的行为和实现细节分离开。

    1.1.2_面向对象和面向过程的区别?

    面向过程

    优点:(性能高)性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源。比如,单片机、嵌入式开发、Linux/Unix 等一般采用面向过程开发,性能是最重要的因素。
    缺点:没有面向对象易维护、易复用、易扩展。

    面向对象

    优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。
    缺点:性能比面向过程低

    1.1.3_重载和重写的区别?

    感觉这个问题放在这里有点奇怪,但是也没地方放了。

    简单来说,重载(overload)是指参数列表不同的几个方法,但是方法名称相同;重写是指子类对于父类的某一个方法不满意,对父类的方法进行了重写(参数列表都是相同的)。具体看下面的介绍。
    1)重写 override

    方法名、参数、返回值相同。
    子类方法不能缩小父类方法的访问权限。
    子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。
    存在于父类和子类之间。
    方法被定义为 final 不能被重写。

    2)重载 overload

    参数类型、个数、顺序至少有一个不相同。
    不能重载只有返回值不同的方法名。
    存在于父类和子类、同类中。

    1.1.4_Java 中,什么是构造方法?什么是构造方法重载?什么是拷贝构造方法?

    1)构造方法

    当新对象被创建的时候,构造方法会被调用。每一个类都有构造方法。在程序员没有给类提供构造方法的情况下,Java 编译器会为这个类创建一个默认的构造方法(空的构造方法)。

    2)构造方法重载

    Java 中构造方法重载和方法重载很相似。可以为一个类创建多个构造方法。每一个构造方法必须有它自己唯一的参数列表。(多样化的多种选择的创建对象)

    3)拷贝构造方法

    Java 不支持像 C++ 中那样的拷贝构造方法,这个不同点是因为如果你不自己写构造方法的情况下,Java 不会创建默认的拷贝构造方法。

    今天的分享就到这里。明天接着更新1.2_JDK、JRE、JVM 分别是什么关系?

    1.2_JDK、JRE、JVM 分别是什么关系?(下期更新)

  • 相关阅读:
    CUDA编程基础:线程标识符计算,以及并行运算原理
    redis 宕机恢复
    如何快速生成项目目录结构树?
    shell脚本入门到实战(一)
    【机器学习】使用scikitLearn对数据进行降维处理:PCA法及增量训练
    测量程序正算
    决策树算法学习笔记
    Day43——约束条件之主键与外键
    一、多线程的基本概念
    六一儿童节与AIGC:科技与童趣的奇妙融
  • 原文地址:https://blog.csdn.net/qq_51550750/article/details/126201718