1.面向对象的认知?

面向对象就是:把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象。对同类对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信。程序流程由用户在使用中决定。对象即为人对各种具体物体抽象后的一个概念,人们每天都要接触各种各样的对象,如手机就是一个对象。

面向对象编程:(OOP: object-oriented programming)
image.png
面向对象与面向过程的区别

项目名称 面向对象程序设计 面向过程程序设计(也叫结构化编程)
定义 面向对象顾名思义就是把现实中的事务都抽象成为程序设计中的“对象”,其基本思想是一切皆对象,是一种“自下而上”的设计语言,先设计组件,再完成拼装。 面向过程是“自上而下”的设计语言,先定好框架,再增砖添瓦。通俗点,就是先定好main()函数,然后再逐步实现mian()函数中所要用到的其他方法。
特点 封装、继承、多态 算法+数据结构
优势 适用于大型复杂系统,方便复用、 适用于简单系统,容易理解
劣势 比较抽象、性能比面向过程低 难以应对复杂系统,难以复用,不易维护、不易扩展
对比 易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
设计语言 ava、Smalltalk、EIFFEL、C++、Objective-、C#、Python等

| C ,Fortran |

类与对象的主要区别

对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
:类是一个模板,它描述一类对象的行为和状态。

2.面向对象的特征以及理解?

  • 封装 两层含义:一层含义是把对象的属性和行为看成一个密不可分的整体,将这两者“封装”在一个不可分割的独立单元(即对象)中;另一层含义指“信息隐藏”,把不需要让外界知道的信息隐藏起来,有些对象的属性及行为允许外界用户知道或使用,但不允许更改,而另一些属性或行为,则不允许外界知晓,或只允许使用对象的功能,而尽可能隐藏对象的功能实现细节。

封装的优点

  1. - 良好的封装能够减少耦合,符合程序设计追求“高内聚,低耦合”。
  2. - 类内部的结构可以自由修改。
  3. - 可以对成员变量进行更精确的控制。
  4. - 隐藏信息实现细节。

实现Java封装的步骤:1 修改属性的
[

](https://blog.csdn.net/sugar_no1/article/details/86366714)


3.this和super?

this有三大作用:调用属性,调用方法,表示当前类对象

  • this是自身的一个对象,代表对象本身,可以理解为指向对象本身的一个指针,
  • this的用法在Java中可以分为3种,
  • 1普通的直接引用,就是this相当于指向当前对象本身。
  • 2 引用类的隐藏数据,(比如实体类中的Set方法,通过Set方法中的this。成员属性=参数名,给私有化的成员属性间接的赋值)
  • 3 引用构造函数:this(参数):调用本类中另外一种形式的构造函数(应该为构造函数中的第一条语句)

super:也有三种方法:
1普通的直接引用:与与this类似,super相当于是指向当前对象的父类,这样就可以用super属性名,引用父类的非共有的成员成员属性。
2 子类中的成员方法或成员属性与父类的相同时,用来引用父类的成员属性或者是成员方法,(注意:构造函数时不可以被继承的)
3 引用构造函数:super(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)
this(参数):调用本类中另外一种形式的构造函数(应该为构造函数中的第一条语句)
可以用super和this分别调用父类的构造方法和本类中其他形式的构造方法。

super和this的异同:

  • super(参数):调用父类中另一种形成的构造函数(应该为构造函数中的第一条语句)
  • super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super.变量名 super.成员函数据名(实参)
  • this:它代表当前对象名(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名)
  • 调用super()必须写在子类构造方法的第一行,否则编译不通过。每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。
  • super()和this()类似,区别是,super()从子类中调用父类的构造方法,this()在同一类内调用其它方法。
  • super()和this()均需放在构造方法内第一行。
  • 尽管可以用this调用一个构造器,但却不能调用两个。
  • this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。
  • this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。
  • 从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。



4.抽象类和接口(1.7和1.8)的区别?
5.各种关键字:static final instanceof?
6.装箱和拆箱?