构造函数:
构造函数与类名相同
作用:是给对象初始化的,
如果一个类没有定义构造函数,系统会默认给类一个空参数的构造函数
如果有定义的话就,默认的构造函数就没有了
构造函数与一般函数有什么不同?
构造函数是在对象一建立时就运行了,是给对象进行初始化的,而一般函数是需要在对象建立过后调用这个对象的方法时运行
构造函数只运行一次,而一般函数可运行多次,对象调用多少 次就会运行多少 次,前提是这个函数是公共的而非私有
代码示例:
public class ObjectTest
{
public static void main(String[] args)
{
Person p=new Person("zhangsan",20);
p.cry();
}
}
class Person
{
//属性私有
private String name;
private int age;
//构造函数 给对象进行初始化 此时只能是public而不能是private 一旦私将不能在外面创建对象
public Person(String name,int age)
{
this.name=name;
this.age=age;
//此处调用 哭的功能只在运行一次,如果再想调用可以创建对象调用 cry()方法
cry();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//比如说人一生下来就应该有哭 的功能,此时可在给对象初始化时调用
public void cry()
{
System.out.println("哭 ");
}
}
构造代码块:
构造代码块是做什么的呢?
也是给对象进行初始化,对象一建立就会运行,而且优先于构造函数执行
既然都是给对象进行初始化的那么肯定有它的区别:
构造代码块是给所有的对象进行统一初始化(给不同对象的共性内容定义在构造代码块里)可以对上面的代码进行简化
而构造函数是给对应的对象进行初始化
public class ObjectTest
{
public static void main(String[] args)
{
Person p=new Person("zhangsan",20);
p.cry();
}
}
class Person
{
//属性私有
private String name;
private int age;
//构造函数 给对象进行初始化 此时只能是public而不能是private 一旦私将不能在外面创建对象
public Person(String name,int age)
{
this.name=name;
this.age=age;
//此处调用 哭的功能只在运行一次,如果再想调用可以创建对象调用 cry()方法
//cry();
}
//构造代码块
{
//既然每个孩子都会器,那么就可以将这个方法放在构造代码块中
cry();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//比如说人一生下来就应该有哭 的功能,此时可在给对象初始化时调用
public void cry()
{
System.out.println("哭 ");
}
}