面向对象总结

面向对象编程的优势:

面向对象是将事物高度抽象化。

面向过程是一种自顶向下的编程

面向对象必须先建立抽象模型,之后直接使用模型

类:类(class)是具有相同属性和服务的一组实体(entity)的集合。它为属于该类的所有对象提供了统一的抽象描述

定义属性:访问修饰符 类型 属性名;

定义行为:访问修饰符 返回值类型 方法名(参数列表){方法体};

对象:对象就是类的一个实例,一个具象存在。

得到对象的方式:

实例化

语法:类名 对象名 = new 类名();

类反射

语法:类名对象名 = Class.forName(“完全限定名”).newInstance();

类名对象名 = 类名.class.newInstance();

克隆

反序列化

类与对象的关系:类是对象的抽象模板,对象是类的具象实现

当类成为对象:

[if !supportLists]1)    [endif]装载:把类的.class文件读入内存

[if !supportLists]2)    [endif]验证:把类的.class文件读入内存

[if !supportLists]3)    [endif]准备:JVM为静态变量分配内存,并设置默认值

[if !supportLists]4)    [endif]解析: 把类的.class文件读入内存

[if !supportLists]5)    [endif]初始化:将静态变量的值进行初始化赋值

JAVA为值传递,不是址传递.

每一个类有默认的构造类

父类:具有相同属性与行为的类

失血模型:失血模型就是一个类,只有私有属性以及属性的getter/setter的纯数据类

封装:狭义---失血模型

广义---隐藏对象的属性和实现的细节,仅对外提供公共访问方式

封装的好处:

1.使用者只需要了解如何通过类的接口使用类,而不用关心类的内部数据结构和数据组织方法

2.高内聚,低耦合一直是我们所追求的,用好封装恰恰可以减少耦合

3.只要对外接口不改变,可以任意修改内部实现,这个可以很好的应对变化

4.类具有了简洁清晰的对外接口,降低了使用者的学习过程

开闭原则:

1. 一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。

2. 打开应用接口,关闭细节的实现

重载:

1. 在同类中,有两个或两个以上方法有相同的方法名,不同的参数列表(参数的个数,类型,类型的顺序只要有一个不同),则该组方法形成重载,重载与返回值无关

2. 重载是java面向对象的特征多态的体现,体现了静态多态性

构造函数:构造方法又称为构造函数,用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中.

注意事项:

A.构造器必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名)

B.每个类可以有一个以上的构造器

C.构造器可以有0个、1个或1个以上的参数

D.构造器没有返回值类型

E.构造器总是伴随着new操作一起调用

任何一个类都必须含有构造方法.

Static

[if !supportLists]1.   [endif]被static修饰的成员变量和成员方法独立于该类的任何对象

[if !supportLists]2.   [endif]用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象市,不生成static变量的副本,而是类的所有实例共享同一个static变量

[if !supportLists]3.   [endif]static变量前可以有private修饰,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用,但是不能在其他类中通过类名来直接引用

静态代码块在程序运行主方法前被加载,且只加载一次,每次实例化对象不会重置内存;非静态代码块在程序运行主方法前被加载,且每次实例化都被加载.

你可能感兴趣的:(面向对象总结)