1、什么叫面向对象?
面向对象就是一种常见的程序结构设计方法。
1.它是相对于面向过程而言的。
2.面向对象和面向过程都是思想,是思考方式。
3.面向过程强调的是行为,面向对象强调具备这些行为的实体,即对象。
5.面向对象基于面向过程
面向对象思想的基础是将相关的数据和方法放在一起,组合成一种新的复合数据类型,然后使用新创建的复合数据类型作为项目的基础。
面向对象是一个很抽象的概念,它相对面向过程而言。
过程与对象都是一种解决问题的思想。
面向过程:强调的是功能行为,一种过程,先干啥,再干啥;
面向对象:将功能封装到对象里,强调的是具备某功能的对象;
按照面向对象的思想,可以把任何的东西看做对象!
总结:
面向过程:强调的是具体的功能实现;(执行者)
面向对象:强调的是具备功能的对象。(管理者)
2、类和构造函数
类是对一类事物的抽象描述。对象是这类事物实在的实体。定义类就是描述类的属性和行为。属性是成员变量,行为是成员函数。
类一般具有成员和构造函数两个部分。
构造函数:用来构造类的实例(每一个类都默认有一个无参的构造方法,得使用new调用),类名(参数列表){执行语句;}
1.函数名与类名相同
2.不用定义返回值类型
3.不可以写return语句
4.多个构造函数是以重载的形式存在
5.当一个类中没有定义构造函数,系统会自动添加默认构造函数。一旦定义了构造函数,系统就不会添加默认构造函数。
默认构造函数:类名(){}
6.构造函数私有化后,该类无法在外部建立对象。因为私有化后它就不能被外部调用,就无法进行对象初始化。
构造函数和一般函数差异:
1.定义的结构不同
2.构造函数是在对象一建立就运行,给对象初始化。而一般函数是在对象调用才执行,是给对象添加对象具备的功能。
3.一个对象建立后,构造函数只能运行一次,而一般函数可以被对象调用多次。
什么时候使用构造函数?
1.对象一被创建就具备一些属性和立即执行的功能,就可以讲这些内容定义在构造函数中。
2.当有未知内容时,就要定义一个有参数列表的构造函数
类的定义:
[修饰符] class 类名{
1~n个构造方法;
0~n个字段;
0~n个方法
}
定义类,其实就是定义类里面的对象
对象包含:
状态;(属性)
功能、行为;(方法)
通过类来描述对象;
状态--------成员变量;
功能、行为——方法;
总结:
类是抽象的,对象是具体的
注意:
默认构造方法的特点。
多个构造方法是以重载的形式存在的。
构造方法的重载:
this([实参]);调用当前类的构造方法
注意: this([实参]);必须放在构造器的第一行;
对象的产生格式:
类名称 对象名 = new 类名称();
3、static关键字
特点:
随着类的加载而加载
优先于对象存在
被所有对象所共享
可以直接被类名调用
使用注意:
静态方法只能访问静态成员
但是非静态成员可以访问静态成员;
静态方法中不可以使用this,super关键字
主方法(main)是静态的(可以利用类名去调用静态的main方法,很正常!但是会陷入死循环,导致内存溢出,jvm自动停止!)
public staticvoid main(String[] agrs){}
可修饰字段,方法。
用static 修饰的成员表示它属于这个类共有,而不是属于该类的单个实例。
static修饰的字段 == 类字段
static修饰的方法 == 类方法
没使用static修饰的字段和方法,成员属于类的单个实例,
不属于类。
没有static 修饰的字段 == 实例字段
没有static 修饰的方法 == 实例方法
类和实例访问字段和方法的语法:
访问类成员: 类.字段 类.方法
访问实例成员: 实例.字段 实例.方法
总结:
static 修饰的字段和方法,既可以通过类调用,也可以使用实例调用;
没static 修饰的字段和方法,只能使用实例来调用(建议使用:类名来调用; 其实在底层,对象调用类成员,也会转换类名调用)
static关键字不能与this,super同时连用!
4、this关键字
特点:this表示当前对象。
当前对象 ←→ 当前正在调用实例成员的对象
换言之:谁调用了方法,谁就是当前对象。
什么时候使用this关键字呢?
方法间的相互调用;
this.字段;
构造器中相互调用,但是此时this([参数])必须写在构造方法第一行。
this不能用在static修饰的方法里和static修饰的代码块里;
5、匿名对象
一个没有名字的对象, 创建了一个对象出来,没有赋给一个变量;
特点:
对方法或字段只进行一次调用时;
可作为实际参数进行传递;
只在堆里面开辟存储区域,
只能使用一次, 使用完就被销毁了;
何时使用?只拿来用一次!!
new Person();表示匿名对象,没有名字的对象
new Person().age = 17;//使用一次之后就被销毁了