- 面向对象基本概念,万物皆对象
- 定义:编程思想,思维方式
- 两种思维方式的区别:
- 面向过程
- 根据具体的操作步骤去实现程序
- 缺点:
- 不通用,耦合度高
- 不利于维护,不能适应变化
- 面向对象
- 解决程序适应变化的能力(可维护性强),降低功能之间的相互依赖,解耦!
- 面向过程
- 两种思维方式的区别:
- 如何建立面向对象思维方式:
- 先整体,在局部
- 在抽象,再具体
- 粒度
- 如何抽象:
- 考虑事物的共同点(共性)
- 能做什么,在怎么做
- 设计原则,设计模式
- 定义:编程思想,思维方式
- 类与对象
- 类:通过类别/分类可以区分不同的事物种类
- 是一组具有相同特性(属性)与行为(方法)的事物集合.
- 对象:一切具体的事物
- 关系:
- 对象是一个个产物,是一个个体的特征
- 类表示一个共性的产物,是一个综合的特征
- 类由属性和方法租车
- 属性:特征
- 方法:行为
- 类:通过类别/分类可以区分不同的事物种类
- 定义格式
- class类名称 {属性;返回值方法名(参数…){} }
- 一个类想要真正的进行操作,则必须依靠对象
- 类名称类对象名称 = new类名称()
- 访问类的属性:对象.属性
- 访问类的方法:对象.方法
- 声明对象:类名称对象名称 = null,没有内存指向,无法调用属性方法
- 实例化对象:类名称对象名称 = new类名称()表示分配内存,实例化对象
- 两种方式调用:
- 匿名对象调用
- 实例化对象(引用变量)调用属性方法
- 可以有多个引用类型变量共同指向一个对象
- 对象内存分析
- 栈内存,引用变量存储对象堆内存的地址
- 地址, 32位内存占4字节, 64位占8字节
- 堆内存
- new:申请内存空间,表示实例化对象,创建
- 要尽早将对象置为null
- 没有引用指向的对象会被gc,可以调用System.gc();提醒系统尽快执行垃圾回收
- 栈内存,引用变量存储对象堆内存的地址
- 封装性
- 面向对象三大特征之一
- 隐藏细节,仅对外部提供访问接口
- 好处:
- 模块化
- 重用
- 插件化,易于调试维护
- 安全,信息隐藏
- 构造方法
- 构造方法
- 类创建对象时自动调用的方法,用来初始化属性,也可以使用setter方法初始化
- 是实例化时第一个调用的方法
- 特点:
- 与类名相同
- 没有返回值
- 若没有写构造方法,编译器则会添加默认无参构造方法
- 构造方法的重载
- 可以自定义多个构造方法,但参数不同
- 互相可以使用this(…)调用
- super(), this()必须在首行
- call to super()/this() must be first statement in constructor body,只能位于构造器的首行
- 不能互相调用this(…)
- recursive constructor convocation,递归调用构造器
- 构造方法私有化
- 保证该类只有一个对象
- 构造方法
- 方法的重载
- 方法名相同,参数不同(方法签名:方法名,参数列表(参数类型,顺序,数量))
- 返回值,修饰符不能作为判断依据
- 方法名相同,参数不同(方法签名:方法名,参数列表(参数类型,顺序,数量))
- String
- 实例化的两种方式
- String s = new String();
- 常量池
- 堆区
- String s = "";
- 常量池创建,若有则直接使用
- String s = new String();
- 区别:
- 直接赋值:检查字符串中的常量池(堆内存)是否存在该对象,如果存在,则指向该对象,若果不存在,则再常量池中创建并指向该对象(0/1个对象)
- new:在堆中创建一个对象,然后检查字符串常量池,如果不存在,则会在常量池中创建该对象.
- 这种机制有助于节省内存,提高效率
- 由char数组存储
- 实例化的两种方式
- Extends
- 运行时常量池(Runtime Constant Pool)是方法区(Method Area)的一部分,是各线程共享的内存区域。
- 在方法区中,还有运行时数据区有Java堆、方法区、Java虚拟机栈、本地方法栈、程序计数器
- Java虚拟机方面的知识,可以看一下下面的链接。http://www.cnblogs.com/Cratical/archive/2012/08/21/2649985.html
- Notice
- 面向对象特征是什么:
- 封装,继承,多态(,抽象)
- 字符串相加是在堆区创建对象还是在常量池中创建对象
- 如果编译器可以确定,则为常量池中创建
- String s = "a" + 1;
- final String s = "a"; String b = s + "a";
- 否则在堆区创建
- String s = "a"; String b = a + "a";
- String a = getString() + "a";
- 字符串与变量相加,会产生大量垃圾对象
- 如果编译器可以确定,则为常量池中创建
- 面向对象特征是什么:
- 面向对象基本概念,万物皆对象
JAVA面向对象 Part01 零碎知识点总结
最新推荐文章于 2022-06-06 14:13:15 发布