3.面向对象

Posted 走遍天涯心随你起落

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3.面向对象相关的知识,希望对你有一定的参考价值。

面向对象

1.面向对象和面向过程

   面向对象以功能来划分,面向对象可以有更好的可移植性和拓展性

   面向过程以步骤划分问题

 

2.对象和类的关系:类是对对象特征的抽象与归纳,对象是类的实例化,如汽车和BMW(宝马)

 

3.栈和堆:

栈的特点:

   ---线程私有,不能实现线程之间的共享

   ---局部变量存入栈中

   ---系统自动分配,内存连续,速度快

堆的特点:

   ---new出来的对象

   ---空间不连续,分配灵活,速度慢

   ---方法区的堆被所有线程共享,用来存放永远不变或唯一内容

 

4.局部变量、成员变量、静态变量

   局部变量:在方法或语句块中声明,必须要手动初始化,从属于方法或语句块

   成员变量:在类中方法外声明,从属于对象

   静态变量:类中方法外声明(用关键字static),从属于类

 

5.构造方法用于对类的成员变量的初始化,构造方法名必须跟类名保持一致,没有返回值,构造方法在对象实例化时被调用(构造方法可以重载)

 

6.this指针在普通方法中指的是当前类,在构造方法中指的是当前类的其他构造方法

 

7.static变量在内存中放置在堆中的方法区,属于静态不变;静态初始化块相比于main先执行

 

8.一个构造方法调用另一个构造方法通过this(参数),必须位于第一句

 

9.package的作用

   ---提供多层命名空间,解决命名冲突

   ---对类按功能分类,使项目组织更加清楚

 

10.import java.util.*;不会影响运行速度,但会影响编译速度。import static 静态导入的作用是导入类的静态属性和方法

 

11.java.util.Date和java.sql.Date怎么区分

   申明引用或者实例化的时候必须全路径

 

12.javadoc注释/** */

 

13.内聚和耦合

   内聚:一个模块内部各个元素彼此结合的紧密程度的度量

   耦合:软件系统结构间相互联系紧密程度的一种度量

 

14.一般属性需要设置为private =>封装数据,通过调用对象方法修改,不让其他人随意修改

 

15.继承的好处

   逻辑关系更清晰,减少代码重复,在使用时,通过父类定义引用,可以组织所有子类

 

16.单继承能避免诸如父类命名重复等错误的发生,java可以通过接口组合来实现多继承

 

17.假如父类有main方法,子类不能继承(main方法是静态方法)

 

18.多态实现的三个必要条件

   ---继承

   ---重写

   ---父类引用指向子类对象

 

19.java中,final修饰的方法属于静态绑定,其他方法是动态绑定

 

20.final变量是只读的。方法前面加上final关键字,代表这个方法不能被子类的方法重写。使用final修饰的类叫fina类。final类不能被继承

 

21.String类是final类,不能被继承

 

22.*向上转型和向下转型

 

23.抽象类和接口的区别

抽象类:

  1.包含抽象方法的类是一定抽象类,抽象类不一定包含抽象方法。抽象类可以有普通方法,可以定义构造方法。(抽象类不能被new出来,抽象类的构造方法不能被调用)

  2.抽象方法一定是public abstract

  3.抽象类中可以定义一些子类的公共方法,子类只需要增加新的功能,不需要重写已存在的方法。

 接口:

  1.接口中只能定义常量和抽象方法

    2.接口中的常量一定是public static fianl

    3.接口不能定义普通变量,普通方法,不能被new

  4.接口之间可以多继承,一个类可以实现多个接口

 

 

24.GC(Garbage Coolection)指垃圾回收机制。没有提供相关api,手动回收,所有的内存分配和回收权限都在jvm中

 

 

 

25.System.gc():呼叫java虚拟机的垃圾回收器运行回收内存的垃圾

 

 

 

26.finalize()方法

  当垃圾回收器认为一个对象没有存在意义时,会回收该对象的内存,会调用该对象的finalize()方法,释放该对象在堆中占用的内存(继承于Object类)

 

 

以上是关于3.面向对象的主要内容,如果未能解决你的问题,请参考以下文章

面向对象基础一

Java基础--面向对象(上)

2018-3-5 面向对象

JS面向对象

3.4 面向对象分析面向对象设计(初步)

Java面向对象知识(上:基础篇)