面向对象基础(类,创建对象,重载和匿名对象)
面向对象是相对于面向过程来讲的,指的是把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。
面向过程到面向对象思想层面的转变:
- 面向过程关注的是执行的过程,面向对象关注的是具备功能的对象。
- 面向过程到面向对象,是程序员思想上从执行者到指挥者的转变。
如果从代码上来说,大概就是将具有一定属性和功能的对象封装成一个类。
面向对象思想从概念上来讲分为三种:
- OOA:面向对象分析(Object Oriented Analysis)
- OOD:面向对象设计(Object Oriented Design)
- OOP:面向对象程序(Object Oriented Programming )
面向对象三大特征:
- 封装性:所有的内容对外部不可见
- 继承性:将其他的功能继承下来继续发展
- 多态性:方法的重载本身就是一个多态性的体现
类的定义格式
类的定义格式:
class 类名称{
成员属性
成员方法
}
属性定义格式:
数据类型 属性名;
属性定义并赋值的格式:
数据类型 属性名 = 初始化值;
方法定义格式:
权限修饰符 返回值类型 方法名(形式参数列表){
//方法体
return 返回值;//若返回值类型为void则不需要
}
构造方法:(没有返回值类型)
方法名(与类名相同)(形式参数列表){
//方法体
}
对象的创建与使用
一个类要想真正的进行操作,则必须依靠对象,对象的定义格式如下:
类名称 对象名称 = new 类名称();
如果要想访问类中的属性或方法(方法的定义),则可以依靠以下的语法形式:
访问类中的属性: 对象.属性;
调用类中的方法: 对象.方法(实际参数列表);
创建对象在内存中的分析
Animal ani = new Animal();
new是在堆内存中开辟了新的空间,而ani是在栈中创建的对象的引用,存储着堆中新空间的地址。
另外,java中的GC(垃圾回收器)会自动检测对象在栈内存中是否有对应的引用,没有就会将对象回收,因此不需要手动回收。
方法的重载
方法名称相同,参数类型或参数长度不同,可以完成方法的重载。
方法的重载与返回值无关。
方法的重载,可以让我们在不同的需求下,通过传递不同的参数调用方法来完成具体的功能。
构造方法的重载
一个类可以存在多个构造方法,参数列表的长度或类型不同即可完成构造方法的重载。
构造方法的重载,可以让我们在不同的创建对象的需求下,调用不同的方法来完成对象的初始化。
匿名对象
没有对象名称的对象就是匿名对象。
new 类名().成员变量名
new 类名().成员方法名
匿名对象只能使用一次,因为没有任何的对象引用,所以将称为垃圾,等待被GC回收。
只使用一次的对象可以通过匿名对象的方式完成。