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

前言

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

一、java基础篇

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

1.1_什么是面向对象?

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

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

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 分别是什么关系?(下期更新)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值