关于面向对象的一些理解(1)

来源:互联网 发布:wiffi转网络接口 编辑:程序博客网 时间:2024/05/17 06:24

1.编程语言的发展:

机器语言--->汇编语言--->面向过程编程--->面向对象编程--->面向切面编程

2.面向对象的思想:从现实世界中客观存在的事物出发来构造软件系统,在系统的构造中尽可能的使用人类的自然思维方式,强调直接以问题域(现实世界)中的事物为中心来思考问题,认识问题,并根据这些事物的本质特点,把它们抽象地表示为系统中的对象,作为系统的基本构成单位(而不是用一些与现实世界中的事物相关比较远,并且没有对应关系的其它概念来构造系统)。这可以使系统直接地映射问题域,保持问题域中事物及其相互关系的本来面貌。总的来说就是万事万物皆为对象。

3.类是现实生活中一类具有共同特征的事物的抽象,由属性和方法构成。实质是一种数据类型,类似于int、char等基本数据类型,不同的是他是一种复杂的数据类型,而不是数据,所以不存在内存中,不能直接被操作,只又被实例化为对象时,才能变的可操作。

    [修饰词] class 类名 [extends 父类名] [implements 接口名1,接口名2.....]{ }

4.类是同一类型对象的模板;对象是类的一个具体的实例。

5 什么是方法?

在编程语言中,如果将函数定义为类定义的一部分,或者将它与某个对象绑定,则该函数称为方法

方法的意义在于 

1).对一组操作/算法的封装

2).减少代码的耦合度

3.)提高代码的复用度

6.构造方法

1).构造方法就是类构造对象时调用的方法,主要用来实例化对象,就像一个对象加工厂

2).构造方法的名字必须与定义他的类名完全相同
3).
构造方法的调用是在创建一个对象时使用new操作执行,不能显示调用,不能被static、final、synchronized、abstract修饰。

7.局部变量与成员变量的区别:

1).成员变量定义在类中,在整个类中都可以被访问;局部变量只定义在局部范围类,如函数,语句中,只对局部范围内有效。

2).成员变量随着对象建立而建立,随着对象消失而消失;局部变量存在于占内存中,作用的范围结束,变量空间会自动消失。

3).成员变量有默认初始值,局部变量没有默认初始值。

在使用变量时遵循就近原则,首先在局部范围找,有就使用,在按着成员位置找。

8.引用类型:由类型的实际值引用表示的数据类型,引用类型在创建时,占用两块内存空间。

9.方法的重载:在一个类中定义了多个同名的方法,但每个方法具有不同的参数类型或参数的个数。

10.JVM的内存分配

 java程序运行在JVM(即java虚拟机)上,可以把JVM理解成java程序和操作系统之间的桥梁,JVM实现了Java平台的无关性。

栈:栈中保存的是基础数据类型的对象和对象的自定义对象的引用以及局部变量,栈区的空间是自动连续分配的。

堆:存储的是new出来的对象,每个对象都包含一个与之对应的class的信息。

方法区:又叫静态区,存放虚拟机加载类的相关信息,如类,静态变量、常量和代码块。

11.参数传递

java的参数传递分为值传递和引用传递,值传递传递的参数是基本数据类型,引用传递传递的参数是引用数据类型,如对象,就是把对象在内存中的地址拷贝一份传给参数。

12.this关键字

this是一个引用,指向自身的对象,this调用本类中的属性,也就是类中的成员变量。this调用本类中的其他构造方法,调用时要放在构造方法中的首行。

13.面向对象的三大特征

1.封装:就是把对象的属性和操作结合为一个独立的整体,并且尽可能的隐藏对象的内部细节。隐含对象内部的复杂性,只对外公开简单的接口,便于外界使用,从而提高系统的扩展性。要尽可能做到高内聚,低耦合。并且通过修改属性的可见性来限制对属性的访问。

2.继承:继承是从已有的类中派生出新的类,新的类具有该类的属性和行为,并能在此基础上进行扩展。继承是对某一批类的抽象,从而实现对现实世界更好的建模,从而实现代码的复用性。

java只支持单继承,也就是只能继承一个类。如果一个类中没有声明继承关系,默认继承Object类。子类继承父类的全部操作,除了构造方法,如果父类中的属性是private的,不能直接操作,可以通过set,get方法进行操作。

3.多态:指允许不同软件元素对统一消息作出响应。(如果面试问到的话,最好举例说明)

理解动态绑定的实例。通过在测试类中创建方法去获取哪一个对象来执行父类中定义的方法。

原创粉丝点击