java的构造特点_JAVA学习第八课(构造函数及其特点)

构造函数:

构造函数,就是在构建 创造对象 时所调用的函数,作用就是给对象进行初始化

特点:

1.函数名和类名相同

2.不需要定义返回值类型

3.没有具体的返回值

作用:给对象进行初始化

注意:

1.默认构造函数的特点

2.多个构造函数是以重载的形式存在的

代码演示:

class man

{

private int age;

private String name;

man()//定义一个man类的构造函数

{

System.out.println("sun");

}

public void fun()

{

System.out.println(name+" "+age);

}

}

public class Main

{

public static void main(String[] args)

{

man jo = new man();

}

}

打印 sun、

PS:一个类中如果没有定义过构造函数,那么该类中会有一个默认的空参数构造函数

如果在类中定义了指定的构造函数,那么类中的默认构造函数就没有了

特别注意:如果定义了有参的构造函数,那么默认构造函数的形式也构造,编译器不再自动生成

实际上:默认的空参数函数是:man(){}

比如一个类:

class test

{

}

什么也没有,但是实际上里面有一个test(){},编译器编译时会先判断有没有写构造函数,没有自动添加,有就删除默认的构造函数

构造函数,是在一创建对象的同时被调用了

一般函数和构造函数的区别:

1.构造函数:对象创建时,就会调用与之对应的构造函数,并对该对象进行初始化

一般函数: 创建对象后,需要进行函数的调用的时候才会被调用

2.构造函数,对象创建时,只调用一次

一般函数:对象创建后,想调用几次就调用几次

什么时候使用构造函数?

在描述某一事物时,该事物存在一些内容,这些内容都定义在构造函数里。

如:对象一创建,就有一个默认的年龄、姓名

示例代码:

class man

{

private int age;

private String name;

man()//定义一个man类的构造函数

{

age = 20;

name = "john";

}

public void fun()

{

System.out.println(name+" "+age);

}

}

public class Main

{

public static void main(String[] args)

{

man jo = new man();

jo.fun();

}

}构造函数的重载:

class man

{

private int age;

private String name;

man()//定义一个man类的构造函数--------------- |

{ |

age = 20; |

name = "john"; |

} |

//对象在创建前就有年龄,名字 |

|

man (int a,String s) |-------->重载

{ |

age = a; |

name =s; |

} |

man (String s) |

{ |

name =s; |

} ---------------|

public void fun()

{

System.out.println(name+" "+age);

}

}

public class Main

{

public static void main(String[] args)

{

man jo = new man();

jo.fun();

man jj = new man(1,"BLF");

jj.fun();

man jjj = new man("BLF2");

jj.fun();//打印BLF 0

}

}

PS:一个类中出现同名的函数名,必须要用的重载。

一个对象创建时如果没有调用构造函数,就意味着创建失败。

构造函数的内存分配图(如下图):对象要进堆,函数要进栈

a774e1082b65cfdbe9e28e8c273b62fe.png

构造函数细节:

构造函数,为了方便日后修改信息,所以要加set

构造函数的名前,不可加void等,加了之后就不是构造函数,而变成一般函数了(构造函数的特点2)

错误代码示例

class man

{

private int age;

private String name;

man(int a)

{

age = a;

}

//对象在创建前就有年龄,名字

man (int a,String s)

{

age = a;

name =s;

fun();

}

public void set(String s)

{

name = s;

}

public void fun()

{

System.out.println(name+" "+age);

}

}

public class Main

{

public static void main(String[] args)

{

man jo = new man();

jo.set("BLF2");

jo.fun();

}

}

这段代码的问题在于:

因为没有定义构造函数。

默认的构造函数是代码没有创建构造函数时自动添加,但是上述代码有构造函数了,但是没有man(){}找一个类型的构造函数,所以报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值