1.面向对象简介
面向过程:看待问题,解决问题的思维方式,着眼于问题是如何一步一步解决的,然后亲力亲为的解决这个问题。
面向对象:看待问题,解决问题的思维方式,着眼于找到一个能够解决问题的实体,然后委托这个实体去解决问题。
注意事项:
java是一个面向对象的语言,用java可以更加方便的写出具有面向对象编程思想的程序。
用面向对象的语言写出的代码一定是面向对象的代码?错!!!
2.类的设计和对象的实例化
对象:能够解决问题的实体,
类:由若干个具有相同属性和行为的实体的集合。
类和对象之间的关系:
- 对象是类的实体
- 类是对象的集合
先有类后有对象!
2.1类的设计
关键字class
语法
[访问权限修饰符] class 类名{
//实体
}
类名是一个标识符,遵循大驼峰命名法。
类是一个自定义的类型。
2.2对象的实例化
在实例化对象的时候,其实是在堆上开辟了一块空间,然后将这个空间的地址给左边的变量赋值。
Person xiaoming = new Person();
3.成员访问
访问类中属性和方法,通过 . 语法
3.1static关键字
静态的属性:没有在对象实例化时开辟空间,也没有在堆上开辟空间。
- 静态属性在常量池中(包含在方法区)开辟空间。
- 静态属性空间开辟是发生在类第一次被加载到内存中的时候(第一次使用这个类的时候,包括实例化对象,调用静态方法)
- 静态的属性应该用类来访问。
非静态的属性:
- 在堆上开辟空间
- 开辟空间发生在对象实例化的时候
- 需要对象来访问
静态方法:
- 属于类,需要类来调用
非静态方法:
- 属于对象,需要对象来调用
注意:在静态方法中不能调用非静态成员;在非静态方法中,可以直接访问静态和非静态成员。
3.2this关键字
this:
- 用在非静态方法和构造方法中,不能用在静态方法中。
- 代表当前对象的引用,哪个对象调用这个方法,就是指的谁。
3.3成员访问
类中的每一个成员,在访问的时候都需要一个主体,但是这个访问的主体,在某些情况下是可以省略的。
- 在静态方法中
- 可以直接访问当前类的静态成员,此时调用主体当前类可以被省略。
- 在非静态方法中
- 可以直接访问当前类的静态成员,此时调用主体当前类可以被省略。
- 可以直接访问当前类的非静态成员,此时调用主体this可以被省略。
不能省略的情况,方法的参数和属性同名!
4.构造方法
4.1构造方法的定义和调用
定义:
- 构造方法不能用返回值类型
- 其他的修饰符也不允许存在
- 构造方法的方法名要和类名一致
[访问权限修饰符] 类名([参数列表]){
}
调用:
- 在实例化对象的时候用new调用
- 在构造方法中调用重载的构造方法用this,且要放在首行
特点:
- 如果类中没有定义构造方法,则系统会默认自动添加一个public修饰的无参构造方法
- 如果一个类中定义了构造方法,则系统不会再默认提供任何构造方法
4.2构造方法的重载
构造方法的重载和普通方法的重载类似,但是由于没有返回值,所以只是参数的个数和类型不同。
4.3代码块
- 非静态
- 实例化对象的时候执行,构造方法之前执行
- 非静态代码块执行顺序遵循书写顺序
- 非静态代码块主要用来进行属性初始化操作,和构造方法的功能类似,所以一般不用。
- 静态
- 当这个类第一次被加载到内存(虚拟机)中的时候执行