Java 面向对象编程
面向对象的简介
- 面向对象是以标准的模块化设计,并且可以重用特征,
- 面向过程对于一个问题的解决方案不会考虑重用的设计
- 面向对象设计的三大特征
- 封装性:内部的操作对外部而言不可见,限制访问的安全
- 继承性:在已有结构的的基础上进行功能的扩充
- 多态性:在继承性的基础上扩充而来的概念,指的是类型的转换处理
- 面向对象的开发步骤
- OOA:面向对象分析
- OOD: 面向对象的设计
- OOP: 面向对象的编程
类与对象的简介
- 类是对某一类事物的共性的抽象概念,而对象描述的是一个具体的产物
- 类的组成
- 成员属性:年龄,名字等
- 操作方法:定义对象具有的处理行为
类与对象的定义
- 类是一个独立的结构体,所以需要使用class来进行定义,主要由方法和属性所组成
- 产生对象步骤
- 声明对象
- 实例化对象
对象内存分析
Person per = new Person();
- 堆内存:保存的是对象实例的具体信息,在程序中堆内存的开辟是通过new完成的
- 栈内存:保存的是一块堆内存的地址。通过地址找到堆内存,而后找到对象信息
- 所有的对象在调用属性和方法之前必须进行实例化,否则无法使用报空指针NullPointException
对象引用分析
- 类是引用数据类型
- 存在引用传递,当两个引用变量指向同一个对象实例时,修改会对两个变量都生效
引用与垃圾产生分析
- 垃圾的产生是没有任何栈内存所指向的堆内存空间
- 一个栈内存只能保存一个堆内存的的地址数据,如果发生修改,则原保存的地址数据将彻底消失
成员属性的封装
对属性进行private的私有使用保护,不被外部程序随意修改数据
构造方法和匿名对象
- 构造方法名称必须与类名称保持一致
- 构造方法不允许设置任何返回值类型,无返回值
- 构造方法在使用new关键字自动调用
- 一个类至少存在有一个构造函数,永恒存在
- 区分普通方法,两者对的调用时机不同
- 匿名对象没有引用,调用结束就会进行回收
this关键字调用本类属性
- 当前类中的属性:this.属性
- 当前类的构造方法,普通方法
- 描述当前对象
this调用方法
- 构造方法在new实例化对象的时候调用
- 普通方法在实例化对象后才可以调用
- 评价一个代码的好坏
- 代码结构可以重用,提供的是一个中间独立的支持
- 我们的目标是没有重复
- this()必须放在首行,必须保留程序出口避免死循环
声明static属性
- 定义公共属性,通过类去修改属性值
- static 属性值虽然定义在类中,但是其并不受类实例对象的控制
- 在进行类设计首选非static属性(95%),而考虑到公共属性则考虑
声明static的方法
- 通过类名调用
- 不能加this
- static 方法只允许调用static属性和方法
- 非static方法允许调用static属性和方法
- 所有的static属性和方法都可以在没有实例化对象的前提下使用,而非static则必须实例化后使用
普通代码块
- 定义在方法中的代码块
- 可以对方法进行一些结构的拆分,以防止相同变量名称所带来的的影响
构造块
构造块会有限于构造方法执行,并且每次实例化的时候都会调用构造块的代码
静态代码块
主要指通过static关键字定义的代码块
- 静态代码块优先于构造代码块,并且不管有多少个实例对象,都只会执行一次。
- 父类的代码块优先子类执行
数组的基本定义
- 大量引用类型数据的创建
- 数组的动态初始化,元素默认值为数据类型的默认值
- 数组的静态初始化