如果需要实例化新的对象,需要使用关键字new来解决,但是除了new这个关键字之外,还有可能在对象实例化时为其进行一些初始化的准备操作,这时就需要构造方法的支持。构造方法本身是一种特殊的方法,他只在新对象实例化的时候调用,其定义原则为:方法名称和类名称相同,没有返回值类型声明,以进行重载。
例.定义构造方法
class Book{
/**
* Book类无参构造方法
*/
public Book(){ //构造方法
System.out.println("*******************");
}
}
public class Test{
public static void main(String args[]){
Book book = null; //声明对象不调用构造
book = new Book(); //实例化对象调用构造
}
}
*******************
构造方法的主要功能是进行对象初始化操作,因此如果希望在对象实例化时进行属性的赋值操作,则可以使用构造方法完成
例.利用构造方法为属性赋值
class Book{
private String title;
private double price;
/**
* Book类构造方法,用于设置title和price属性的内容
* @param t title
* @param p price
*/
public Book(String t,double p){
setTitle(t);
setPrice(p);
}
public void setTitle(String t){
title = t;
}
public void setPrice(double p){
price = p;
}
public String getTitle(){
return title;
}
public double getPrice(){
return price;
}
public void getInfo(){
System.out.println("图书名称:" + title + "; 价格: " + price);
}
}
public class TestDemo{
public static void main(String args[]){
Book book = new Book("Java开发",69.8); //声明并实例化对象
book.getInfo(); //调用方法
}
}
图书名称:Java开发; 价格: 69.8
注:构造方法的核心作用:在类对象实例化时设置属性的初始化内容
一个良好的编写顺序:首先编写属性(必须封装,同时提供setter、getter的普通方法),然后编写构造方法,最后编写普通方法
构造方法本身也属于方法,所以可以针对构造方法进行重载
例.构造方法重载
class Book{
private String title;
private double price;
/**
* Book类无参构造方法
*/
public Book(){
System.out.println("无参构造");
}
public Book(String t){
setTitle(t);
System.out.println("一个参数的构造");
}
public Book(String t,double p){
setTitle(t);
setPrice(p);
System.out.println("两个参数的构造");
}
public void setTitle(String t){
title = t;
}
public void setPrice(double p){
price = p;
}
public String getTitle(){
return title;
}
public double getPrice(){
return price;
}
public void getInfo(){
System.out.println("图书名称:" + title + ";价格:" + price);
}
}
public class TestDemo{
public static void main(String args[]){
Book book = new Book("Java开发");
book.getInfo();
}
}
一个参数的构造
图书名称:Java开发;价格:0.0
和主类中的方法不同,对Book类中的三次重载,在主类中单次只能引用一次