一,面向对象的概念
面向对象是一种编程思想。这种思想指导程序员思考问题,解决问题都以“对象”为中心。
当遇到新的问题时,就要想:
1。他是不是需要对象
·不需要对象:例如 求两个整数的最大值,不需要对象,直接调用Math .max(a,b)
2.如果需要对象,就要思考,有没有现成的类可以创建它的对象,如果有就可以直接 new
2.如果不存在这样合适的类,就要先声明一个新的类,再来创建对象。
二。类和对象
1。类的定义
一类具有相同特性的事物的抽象描述。
2.对象的概念
对象是一类事物的某个具体的个体,实例。
学术类是代表事物
具体的某个学生是一个对象。
3.类和对象的关系
类是创建对象的模板,或者类是众多对象的抽象描述。编码的角度,肯定是先写类,再new对象。
类是抽象的,对象是具体的,对象也成为类的实例(实际存在的个例)。
4。类的声明格式
修饰符 class 类名{//类名:每个单词的首字母大写
}
5.对象的创建格式
new 类名()
new 类名(实参列表)
如果new出来,没有用变量引用他,他就是匿名对象。这种对象是一次性的。
类名 对象名 = new 类名();
类名 对象名 = new 类名(实参列表);
目前自己写的类,还没有学习构造器之前,都是用new 类名()创建对象
new 类名(实参列表)
三,类的成员
1。类的成员分为5个
·成员变量
·成员方法
·构造器
·成员内部类
·代码块
2,类的成员变量
概念:
类的成员变量,又称为属性,用来描述事物的数据特征。即该类的对象需要表示哪些数据,就需要声明那些成员变量。
声明格式:
成员变量声明的位置:在类中,方法外。
和他对比的局部变量声明位置:在方法里面
3.成员变量的使用
在其他类里:
对象名.成员变量
4.成员变量的特点
·每一个对象的成员变量值都是独立的
·对象的成员变量有默认值
byte short int long :0
float double:0.0
char:编码值为0的空字符
boolean:false
其他数据类型(引用数据类型):null。
5.成员变量是引用数据类型
·引用数据类型的成员变量(或者叫属性)如果没有赋值,默认值是null,容易发生NullPointerException空指针异常。
·引用数据类型的成员变量必须给它赋值一个相同类型的对象。
·引用数据类型的成员变量可以继续 .成员 ,至于能出什么,看成员变量的类型
四,包 package
包的作用;
可以分文件夹管理众多的类
避免重名
限定某些类,成员的可见性范围。
五,类的成员
类的成员方法:
1 ,非静态方法
·之前写方法修饰符都是 public static ,没有static的方法被称为非静态方法,或者实例方法。
·一个类的非静态方法通常要通过这类的"对象.方法()"的形式进行调用,例如:c1.area();
·在同一个类中,非静态方法可以直接使用本类的属性
2.静态方法和非静态方法的区别?
如果方法中需要用到非静态的属性,那么这个方法就不要声明为静态方法,即只能声明为非静态方法。
如果方法中的功能完成,和非静态的属性完全无关,那么可以声明为静态方法更方便一点。
六,对象数组
int [] arr ={1,2,3,4,5};//元素是基本数据类型
我们现在可以把对象放到数组中。
静态初始化:
//一维数组通用静态初始化格式
元素的数据类型[] 数组名 = {元素1,元素2,元素3,...};
//一维对象数组静态初始化格式
类名[] 数组名 = {对象1,对象2,对象3,...};
动态初始化:
//一维数组通用动态初始化格式
元素的数据类型[] 数组名 = new 元素的数据类型[长度];
//一维对象数组动态初始化格式
类名[] 数组名 = new 类名[长度];
//一维对象数组给元素赋值格式
数组名[下标] = 对象;