美文网首页
面向对象总结

面向对象总结

作者: 阵雨_2a7f | 来源:发表于2018-03-08 11:39 被阅读0次

    面向对象编程的优势:

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

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

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

    类:类(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修饰,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用,但是不能在其他类中通过类名来直接引用

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

    相关文章

      网友评论

          本文标题:面向对象总结

          本文链接:https://www.haomeiwen.com/subject/himefftx.html