0 常用IDEA快捷键
快捷键 | 含义 |
---|---|
“new 类名()"+alt+enter | 引入局部变量(实例化对象) |
(鼠标放在类里)+alt+insert | 生成,可选选择“生成构造器” |
(鼠标放在类里)ctrl+H | 展开子父类关系 |
双击shift | 搜索方法 |
(选中代码)Ctrl+Alt+T | 包围方法(try-catch-finally语句) |
1 面向对象编程(OOP)
面向对象编程(Object-Oriented Programming,OOP)的本质就是:以类的方式组织代码,以对象的组织(封装)数据。
1.1 类和对象的关系
类 | 对象 | |
---|---|---|
一种抽象的数据类型 | 抽象概念的具体实例 | |
某一类具体的事物应该具备的特点和行为 | 具体的事物 | |
实例 | 人 | 张三 |
从认识论角度考虑是先有对象后有类。【先有物品,再分类】
从代码运行角度考虑是先有类后有对象。类是对象的模板。【先有模板,再生产】
1.2 面向过程和面向对象
面向过程 | 面向对象 | |
---|---|---|
思想 | 流水线。按照步骤,一步步走 | 物理类聚。先分类,分别完成每个类 |
应用 | 适合处理较为简单的问题 | 适合较为复杂、多人协作的问题 |
对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。
但是,具体到微观操作,仍然需要面向过程的思路去处理。
1.3 方法的调用
参考OOP的思想——以类的方式组织代码,之后都会用一个主类运行main方法,并在目录下建包存放类。
方法就类似之前学的函数,通常定义在类内。
方法的定义:修饰符 返回类型 方法名(参数列表){ 方法体 }
修饰符四种类型,优先级由高到低:public、protected、default、private
方法的调用/使用方式:
- 静态方法(static)。和类一起存在,可以直接使用。
- 非静态方法。和对象一起存在,先实例化后才能使用非静态方法。
- 形参和实参【形参=参数列表,实参=调用方法时传递进去的参数】
- 值传递和引用传递【值传递不改变原变量,引用传递可以返回】
类的属性(参数)是引用传递。【像传递数组名,改变数组元素】 - this关键字,指代类本身。在类方法中使用
this.属性名
访问类的属性。实例化以后才可以使用this关键字,即不可用在静态方法中。
1.4 创建对象和初始化(构造器)
使用new关键字创建的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用。new 类名()
实际上是调用了类的构造器。
构造器:
- 特点:必须和类的名字相同:必须没有返回类型,也不能写void。
- 用途:类中的构造器也称为构造方法,一般在方法中对类的属性设置初始值,或者输出属性值等等。
- 优点:属性默认私有,而公有的方法可以被对象调用。
- 一个类什么也不写也会有一个默认的构造方法(隐式无参构造)。如果要显示定义有参构造(方法重载),必须同时显式定义无参构造(可以什么都不写)。
- 构造器快捷键:(鼠标放在类里面)
alt+insert
【这个好像和版本有区别,我的IDEA只能有】
1.5 创建对象和内存的关系
- 栈由操作系统自动分配释放 ,用于存放函数的参数值、局部变量等,其操作方式类似于数据结构中的栈【后进先出】。
- 堆由开发人员分配和释放, 若开发人员不释放,程序结束时由 OS 回收,分配方式类似于链表。