目录
面向对象
虚拟世界“模拟”现实生活,必须保证模拟一致
面向过程:按照顺序逐步完成
类:对同一类事物的抽象的描述,不是具体的
对象:万物皆对象,也就是具体的实例
类与对象的关系:抽象与具体的关系
属性:描述对象的特征
方法:对象所做的事情或对象实现的功能,也称为行为
将多个对象找到相同的属性和相同的方法组合在一起形成类
面向对象编写步骤:
1.编写类
2.编写属性(成员变量、字段field)
语法格式:[修饰符] 数据类型 属性名称 [= 值];String name;
属性名也是标识符,编写单词,并且使用驼峰命名法
属性声明时没有赋值会有默认值,数据类型不同默认值不同
整数类型:0 浮点类型:0.0 字符类型:\u0000 布尔类型:false 所有引用类型:null
3.编写方法(暂时编写为public,不加static)
4.编写Test测试类
创建对象
语法格式:类名 对象名 = new 类名();
一个类可以创建任意多个对象,在堆空间开辟空间存储对象,自动分配内存地址,对象名存地址
访问对象中属性的语法格式:对象名.属性名
访问对象中方法的语法格式:对象名.方法名称([参数列表]);
构造方法(无参构造方法、带参构造方法)
构造方法是一个特殊的方法,名字必须与类名一致,必须没有返回值类型,并且不编写void
作用:实现对属性赋值
语法格式:
public 类名([参数列表]){
完成对属性赋值
}
快捷键Alt + Insert---->Constructor
当创建对象时会自动找相匹配的构造方法执行,不匹配则编译错误
没有编写构造方法时系统默认提供无参隐式构造方法,如果编写构造方法,系统不会提供默认无参的构造方法
构造方法重载:使用更灵活
引用数据类型变量
在内存中存放地址(引用)
包括类:系统提供的类:String、System、Scanner......
用户自定义的类:Car、Grade、Student、Cat
以及其他......
对引用数据类型赋值
第一种方式:将对象的内存地址赋给对象名。比如:c = new Cat();
第二种方式:将null赋给对象名。比如:c = null;
当对象名中存放null时,也就是存放的不是地址,没有指向某个对象,就不能访问对象中的属性或方法,否则出现空指针异常
空指针异常:java.lang.NullPointerException
访问对象中的属性或方法之前必须保证对象名中存放的是对象的地址
当某个对象不再使用时,即没有对象名指向,就变成垃圾自动回收(GC机制)
一个对象中的属性可以是用户自定义的数据类型(自定义类作为数据类型)
this关键字
this代表当前这个对象,也就是说当前调用这个方法的对象名
用this关键字可以访问本类中的实例变量、实例方法以及其他构造方法
实例变量:也就是对象的变量,也就是属性(成员变量、字段),前边没有static关键字修饰
静态变量:也就是累的变量,也就是属性(成员变量、字段),前边使用static关键字修饰
当创建对象时,实例变量会在堆内存的对象中存放,因此也叫对象的变量
局部变量没有与实例变量同名时,可以在本类(当前类)中直接使用实例变量,默认有this.,同名时访问实例变量必须加this.
实例方法:也就是对象的方法,前边没有static关键字
静态方法:也就是类的方法,前边使用static关键字
实例方法之间可以相互调用,默认前面添加this.
调用本类中的构造方法,则使用this(),小括号中没有内容,则执行无参构造方法,有内容则执行带参构造方法
当使用this关键字调用本类的构造方法时,必须编写在构造方法中,并且位于第一条语句,不能自己调用自己(递归调用),出现没有意义的死循环