类的构造函数
类的构造函数像一个方法,但是没有返回类型(也没有void),方法名称与类的名称完全相同。
可以通过new操作符,调用构造函数,创建一个类对象
Bicycle bicycle = new Bicycle;
类可以声明多个构造函数,但不能具有相同的参数列表。即,类中不能存在方法签名相同的构造函数。
编译器会自动为没有显式声明构造函数的类,创建一个无参构造函数(no-argument constructor)。但是当类现实声明了有参构造函数,编译器就不再自动创建无参构造函数。
public class Bicycle {
private int speed;
private int gree;
private int cadence;
private boolean moving;
public Bicycle(){
}
public Bicycle(int speed){
this.speed = speed;
}
public Bicycle(int gree, int cadence){
this.gree = gree;
this.cadence =cadence;
}
}
一个类可以声明多个构造函数,基于不同构造函数创建对象并初始化属性值。
预初始化不同属性,但参数个数及类型相同。即,参数列表相同,无法编译
创建对象是基于类提供的构造函数,而不是基于类型创建对象。即,new,类的一个构造函数,而非new,一个类的名称,创建对象。
this,表示当前对象的引用;可以通过this,在实例方法或构造函数中引用当前对象的成员变量。
所有实例方法,都隐式包含一个引用当前对象的变量,名称为this。当方法引用类的实例变量时,编译器隐式的使用this获取当前对象的实例变量。
显式构造函数调用,在构造函数中,可以使用this关键词调用同一类中的另一个构造函数
创建对象
创建一个对象的基本步骤
1、声明
2、实例化
3、初始化
声明
进生命了一个可以引用指定类型对象的变量,声明并不会创建一个对象,必须为其分配一个对象地址才能使用。
实例化
new操作符为对象分配内存,返回对象的内存地址给变量
初始化
new操作符实例化的同时,调用构造函数完成对象的初始化。
访问器
基于封装的思想,实体类中封装的属性数据,对外通过提供访问器(getter/setter)实现。
对外直接暴露成员变量,将无法改变其表现,无法执行辅助性操作(例如限制变量值的范围等)。基于面向对象的封装思想,对成员变量的操作必须通过访问器(Accessor)实现
CC:访问器getter/setter方法命名规范。方法基于驼峰式命名,get/set首字母小写,属性名称首字母大写;boolean类型属性的getter方法以is为前缀,因此,boolean类型属性禁止使用is字母开头;getter/setter方法名称必须与属性名称一致,第三方库基于此命名规范反射
可通过构造函数初始化必选属性后期添加修改其他属性,外界仅能通过getter/setter方法访问封装在对象内部的属性值。
将对象的引用传递给方法,对对象的修改可以影响对象本身。
包
想使用其它包中的public类型(类、接口)等,必须通过以下任意方式:
1、通过包含,包名以及类型名称的,全限定性名称(fully qualified names),使用该成员。这种方法会降低程序的可读性。
2、导入包成员,在package声明语句后,类型定义语句前,通过import关键词引入。通过类型名称使用。
com.example02.clazz.Bicycle成为了当前类的包成员因此,可通过类型名称直接使用。
3、导入成员的整个包,通过*号通配符,导入特定包中的所有类型