构造函数:构建创造对象时调用的函数。
作业:可以给对象进行初始化,即对象一创建出来就具备一些内容。
创建对象都必须要通过构造函数初始化。
package com.monfolld;
class Person {
private int age;
public void setAge(int a){
age=a;
}
public int getAge(){
return age;
}
//定义一个Person类的构造函数
Person(){ //构造函数,是空参数
System.out.println("我是构造函数");
}
}
class PersonDemo{
public static void main(String[] args){
Person p=new Person();
}
}
一个类中如果没有定义过构造函数,那么类中会有一个默认的空参数构造函数。
如果在类中定义了制定的构造函数,那么类中的默认构造函数就没有了
就算只创建一个类,
class Demo{}
其实相当于
class Demo{
Demo();
}
一般函数和构造函数的区别:
构造函数:1.对象创建时,就会调用与之对应的构造函数对对象进行初始化。
2.函数只调用一次。
一般函数:1.对象创建后,需要函数功能时才调用。
2.函数可以调用数次。
什么时候定义构造函数呢?
在描述事物时,该事物已存在就具备一些内容,这些内容都定义在构造函数中。
重载
package com.monfolld;
class Person1{
private String name;
private int age;
Person1(){
name="baby";
age=1;
System.out.println("Person run");
}
Person1(String n){
name=n;
}
Person1(String n,int a){
name=n;
age=a;
}
public void speak(){
System.out.println(name+":"+age);
}
}
class ConsDemo {
public static void main(String[] args){
Person1 p=new Person1();
p.speak();
Person1 p1=new Person1("小明");
p1.speak();
Person1 p2=new Person1("小黑",10);
p2.speak();
}
}
输出结果
Person run
baby:1
旺财:0
小强:10
如果想改内容的话调用一般函数
package com.monfolld;
class Person1{
private String name;
private int age;
Person1(){
name="baby";
age=1;
System.out.println("Person run");
}
Person1(String n){
name=n;
}
Person1(String n,int a){
name=n;
age=a;
}
public void setName(String n){ //创建一般函数
name=n;
}
public void speak(){
System.out.println(name+":"+age);
}
}
class ConsDemo {
public static void main(String[] args){
Person1 p=new Person1();
p.speak();
Person1 p1=new Person1("小明");
p1.setName("小红"); //调用一般函数对像内容进行更改
p1.speak();
Person1 p2=new Person1("小黑",10);
p2.speak();
}
}
结果
Person run
baby:1
小红:0
小黑:10
另外,构造函数内可以调用一般函数.