一:构造函数
*构造函数的基本语法:
<修饰符><类名>([<参数表>]){
[<语句>]
}
二:构造函数的特点
*构造函数的作用:完成类对象的初始化工作。
*构造函数的名称必须与类名相同。
*构造器没有返回类型并且不可被继承。
*一般将构造函数的修饰符声明为public
*构造函数中不能有return语句
三:构造函数参数
*参数表与方法声明中的一样。可以像方法一样向构造函数传递参数。
*构造函数可以是0个,1个或者多个参数
四:无参数的构造函数
*没有构造函数-------使用默认的构造函数(没有参数,没有方法体)
*如果使用没有参数的构造函数,则创建的对象具有相同的初始值。
*带有参数的构造函数:
class Person{
private String name="model";
private int age=17;
private double height=1.8;
private double weight=60;
public Person(String name,int age,double height,double weight){
this.name=name;
this.age=age;
this.height=height;
this.weight=weight;
}
}
五:构造函数的重载
*一个类可以有多个构造函数,叫做构造函数的重载
*条件(满足其一)
···参数的个数不同
···参数的类型不同
···参数的位置不同(但这时要注意,如果参数的类型相同就要报错,必须是不同的类型)
六:构造函数的使用
*不能由程序员显式调用。
*在创建一个类的新的对象的同时,系统会自动调用该类的构造函数为新的对象初始化。
*构造函数只能和New关键字一起使用。
七:格式
类名 对象名=new 构造函数名称(成员变量的初始值)
八:默认构造函数
*每个类至少有一个构造函数。
*如果不添加构造函数则自动添加默认的构造函数。
····默认构造函数不带参数
····默认构造函数函数体为空
*不必编写构造函数就能使用New Xxx()创造对象实例
注意:当编写了构造函数以后,默认的构造函数就会消失。
九:对象
1,对象的生成(对象的声明)
*格式:<类名><对象名>
如:SameCirele c1,c2;
c1和c2是两个空对象。
2,创建对象
*格式:<对象名>=new <类名><实参>;
如:c1=new SameCirele (3,4,5);
c2=new SameCirele(6,7,8);
对象c1的首位置在3,对象c2的首位置在6;
3,对象的引用
SameCirele c1=new SameCirele(3,4,5);
SameCirele c2=c1;
4,对象的清除
*对象为null时,有java的自动回收机制清除对象,释放对象暂用的类存。
*可有手动写finalize()方法撤销对象-----但不提倡使用
十:关于内存
*简单的理解为栈内存和堆内存
*栈内存是用来放置地址的,就像我们的户口本
*堆内存是用来存放地址的实际对象的,就像是我家的房子一样
示例:声明对象 Person p;
这个时候p是在栈内存里面,没有未初始化的地址
创建对象p=new Person();
这时p在堆内存里就占有位置了,只是现在没赋值,都是默认的值
十一:补充内容
*栈内存:在方法中定义的变量(基本类型和引用类型)。超过变量的作用域时,自动释放变量的内存。
*堆内存:new创建的新对象(包括数组),有java的自动回收机制来清除。
十二:两者的区别
*栈(stack)------连续的内存区域,大小固定,编译时确定所需空间大小,效率高。
*堆(heap)------不连续的内存区域,运行是确定所需空间大小(支持面向对象的多态性,如:运行时才能确定是哪个的对象),效率低,但灵活。