一、构造方法的定义与作用
1.1 定义
构造方法是没有返回类型的方法,方法名与类名相同
1.2 作用
因为 构造方法不能被主动调用,只能被动的调用,构造方法是再对象创建时自动调用并执行。所以 适合于在对象被创建时初始化对象成员
二、构造方法的语法
2.1 语法
【修饰符】 类名 (形参1,形参......){
构造方法体
}
快捷键 Alt+Insert 或者 Fn+Alt+Insert
public class Circle {
//属性
double r; //半径
//构造方法
public Circle(double r) {
this.r = r;
}
//方法1 返回圆的面积
public double area(){
return 3.14*r*r;
}
//方法1 返回圆的周长
public double round(){
return 2*3.14*r;
}
2.2 默认的构造方法
【修饰符】类名(){
}
public class Circle {
//属性
double r; //半径
//默认构造方法
public Circle() {
}
//方法1 返回圆的面积
public double area(){
return 3.14*r*r;
}
//方法1 返回圆的周长
public double round(){
return 2*3.14*r;
}
}
三、构造方法的重载(Overload)
3.1 概念
一般情况下,每个类都有一个或多个构造方法,但由于构造方法与类名相同,所以当一个类有多个构造方法时,则这多个构造方法就可以重载。
3.2 案例
public class Goods {
//定义一个商品类,编号,名称,价格,描述
int id;
String name;
double price;
String describe;
//四个参数的构造函数,用户对这个4个属性进行赋值
public Goods(int id, String name, double price, String describe) {
this.id = id;
this.name = name;
this.price = price;
this.describe = describe;
}
//三个参数的构造方法 用户对这3个属性初始化赋值
public Goods(String name, double price, String describe) {
this.name = name;
this.price = price;
this.describe = describe;
}
//无参构造
public Goods() {
}
}
四、构造方法与一般方法的区别
4.1 构造方法
构造方法在对象创建时就被执行了,而且只执行一次
4.2 一般方法
一般方法在对象创建后,需要使用时才被对象调用,并可以被多次调用
五、对象数组
5.1 概念
数组也可以来存放对象,因此,也可以将对象数组作为参数传递到方法中
5.2 案例
/**
* 1、定义一个商品类,编号,名称,价格,描述
* 2、定义一个构造函数,用户对这个4个属性进行赋值
* 3、定义一个商品的对象数组,长度为5
* 4、创建5个商品对象,并且放入对象数组中
* 5、使用循环将对象数组中的每个商品都输出出来
* 6、使用冒泡排序将商品数组按照价格进行升序排序
* 7、使用循环将对象数组中的每个商品都输出出来
*/
public class Goods {
//定义一个商品类,编号,名称,价格,描述
int id;
String name;
double price;
String describe;
//四个参数的构造函数,用户对这个4个属性进行赋值
public Goods(int id, String name, double price, String describe) {
this.id = id;
this.name = name;
this.price = price;
this.describe = describe;
}
public static void main(String[] args) {
//定义一个商品的对象数组,长度为5
Goods[] good = new Goods[5];
//创建5个商品对象,并且放入对象数组中
Goods a1 = new Goods(1, "手机", 5000.0, "通讯工具");
Goods a2 = new Goods(2, "水杯", 30, "用来喝水");
Goods a3 = new Goods(3, "笔记本", 6050.5, "工作设备");
Goods a4 = new Goods(4, "Java程序设计基础", 69, "学习书籍");
Goods a5 = new Goods(5, "jacket", 169, "上衣外套");
good[0] = a1;
good[1] = a2;
good[2] = a3;
good[3] = a4;
good[4] = a5;
//使用循环将对象数组中的每个商品都输出出来
for (Goods s:good) {
System.out.println(s.id+"\t"+s.name+"\t"+s.price+"\t"+s.describe);
}
System.out.println("************************排序************************");
//使用冒泡排序将商品数组按照价格进行升序排序
for (int i = 0; i < good.length; i++) {
for (int j = 0; j < good.length-i-1; j++) {
if(good[j].price > good[j+1].price){
Goods temp = good[j+1];
good[j+1] = good[j];
good[j] = temp;
}
}
}
//使用循环将对象数组中的每个商品都输出出来
for (Goods s:good) {
System.out.println(s.id+"\t"+s.name+"\t"+s.price+"\t"+s.describe);
}
}
}