面向对象不是一种技术,而是一种指导编程的思想。面向对象的思想就是拿来主义:就是在找工具的路上,找到工具就拿过来解决问题,没有找到就自己设计一个工具然后再解决问题。
类与对象 类的概述对于具有相同属性和行为的事物,我们把它们归为一个类。
与C/C++不同,类是Java程序的基本单元,除了开头的package语句和导包语句,其余的内容都是写在类里面,在设计Java程序时要思考如何设计类:
1. 这个类叫什么名字?
2. 这个类包含哪些东西(属性、方法、内部类、静态代码块)?
3. 这个类与其他类有什么关系?
至于第三个问题,将在学习继承的时候具体描述,先将重点放在前两个问题上。
类的定义格式:
访问权限修饰符 class关键字 类名 {
//类体(这个类包含的东西)
}
举例:
public class E {}
类名定义规范与函数名、变量名的规范基本一致,在此不再赘述,但不同的是类的每个单词首字母都要大写。
对象的概述类创建出来以后,是不能直接使用的。比如说老师是叫本Reno去打扫教室,而不是让人类去打扫,打扫教室这件事要落到具体某个人的身上,所以就有了对象的概念,对象就是属于某一类的具体事物,在Java世界中,万物皆为对象。
对象的创建格式:
类名 对象名 = new 构造函数;
new关键字的作用就是创建对象时在堆内存中给对象分配一片空间。
至于什么是构造函数,构造函数的作用是什么,将在下节分析
类与对象的关系类是对象的抽象模板,对象是类的具体实例。
2. 成员变量、成员函数与局部变量 概述及区别成员变量就是在类体里面,函数体外面定义的变量,描述的是类的属性。
局部变量是定义在函数体内或循环体内的变量。
思考:为什么Java源代码中有这么多的大括号?这些大括号有什么作用?
大括号的作用,说白了就是边界,可以界定变量的作用范围,出了大括号有些变量就不起作用。
成员变量与局部变量的不同:
| 成员变量 | 局部变量 | |
| 作用域 | 整个类体里面 | 函数体内或控制块内 |
| 内存位置 | 堆内存 | 栈内存 |
| 生命周期 | 随对象生命周期,对象创建时开始,对象销毁时结束 | 随函数体或控制块的周期,函数体/控制块开始执行时开始,到函数体/控制块执行完结束 |
| 初始值 | 有默认初始值 | 需要手动赋初始值 |
成员变量定义方法与局部变量定义方法大同小异,格式:
访问权限修饰符 [静态修饰符] 数据类型 变量名;
使用成员变量时,要先创建对象,有了对象之后使用 对象名.成员变量名 来访问。
成员函数的定义与使用成员函数的定义方法和之前学到的函数的定义方法一致,格式:
访问权限修饰符 [静态修饰符] 返回值类型 函数名(参数列表) {
//函数体
}
使用成员函数时,要先创建对象,有了对象之后使用对象名.成员函数名(实参列表)来调用成员函数。
3. 访问权限修饰符 public公共访问权限,表示修饰的成员函数/成员变量/类无论是否在同一个包里面,也无论是否在同一个类里面都可以访问。
default(package)包访问权限,表示修饰的成员函数/成员变量/类可以在同一个包中任意一个类访问,不允许跨包访问。
protected父子类访问权限,表示修饰的定义在父类中的成员变量或成员函数在继承该父类的子类中可以访问,同包下其余类的也能访问。
private私有访问权限,表示修饰的成员变量/成员函数只能在该类范围内访问。其中成员变量只能通过其对外开放的函数来更改,使用private修饰的变量可以避免其被意外修改。



