java构造方法的特点-变质岩的构造特点
(3)不能被static final synchronized abstract native 修饰,且不能被return语句返回值
创建某类的对象要遵循如下语法:
类名 对象名=new 类名();
使用new关键字创建对象时要注意以下3个方面:
为对象实例分配内存空间
调用构造
返回对象实例的引用
当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。除了基本数据类型之外java构造方法的特点,其余的变量类型都是引用类
创建对象在内存中的情况如图5.16所示
图5.16对象内存位置
Java中,所有对象的存储空间都是在堆中分配的,但是这个对象的引用却是在栈中
分配。也就是说,在建立一个对象时,从两个地方都分配内存:在堆中分配的内存实际矩
立这个对象,而在堆栈中分配的内存只是一个指向这个堆对象的指针(引用)而已
注意
构造方法和方法的类似之处在于它们都包含可执行代码。然而,它们的区别在于,只
有当JVM实现在创建类的实例时才执行构造方法。构造方法通常包含字段初始化代码。严格来讲,构造方法并不是方法,因为它不会返回任何值
根据参数不同,构造方法又可以分为以下3类。
1.隐式无参构造方法(默认构造方法)
在定义类的时候,如果没有给类定义一个构造方法,Java编译器在编译时会默认提供
个隐式的构造方法,它没有任何参数,并且有一个空主体。
例如, Person类中隐含一个无参构造方法,在
main方法中可以通过new关键字来调用此默认的构造方法,代码如下:
public class test5 { private String name; private boolean sex; private int age; public void speak(String word){ System.out.println(name+"shuo"+word); } public void tread(){ System.out.println("zou"); } public static void main(String[] args) { Persion perison=new Persion();//调用系统提供的一个隐式无参构造方法 perison.tread(); }
2.显式无参构造方法
因为隐式无参构造方法的方法体为空,而我们有时候需要在调用这个构造方法时输出
一些内容或执行一些操作,要实现这个需求,就需要为它定义一个显式无参构造方法。我
们为Persion类添加一个显式的无参构造方法,修改后的代码如下:
public Person(){(//显式定义一个无参的构造方法
system.out.println("我是显式的无参构造方法")
}
3显式有参构造方法
构造并初始化对象是构造方法的作用,所以有时需要给这个方法指定一些参数,定义一
个显式的有参构造方法,例如:
public Persion(int age){....}
下面为 Person类中添加一个有3个参数的显式构造方法,修改后的代码如下:
public test5(String n,boolean b,int a){//参数构造方你发 name=n; sex=b; age=a; } //..省略speak和tread方法 public static void main(String[] args) { test5 aa=new test5("这" , true , 18); System.out.println(aa.age); }
输出结果
可以为自定义的类添加多个构造方法,比如在Test1类中定义一个显式无参构造方法和一个显式有参构造方法,代码如下
public class test5 { public test5(){}; public test5(int i){};
注意
如果类中有一个自己编写的构造方法时,编译器就不会再提供那个默认的构造方法来创建类的实例时,就必须在类中明确添加这个默认
译报错
如果显式定义了一个有参的构造方法,系统就不能调用无参的构造方法,如果通过new关键字来调用无参的构造方法就会出错,将 Person的代码进行如下修改:
private String name; private boolean sex; private int age; //。。省略name.sex和age属性 public test5(String n,boolean b,int a){//参数构造方你发 name=n; sex=b; age=a; } //..省略speak和tread方法 public static void main(String[] args) { test5 aa=new test5(); System.out.println(aa.age);
最后,我自己是一名从事了多年开发的JAVA老程序员,辞职目前在做自己的java私人定制课程,今年年初我花了一个月整理了一份最适合2019年学习的java学习干货,可以送给每一位喜欢java的小伙伴,想要获取的可以关注我的头条号并在后台私信我:【交流】java构造方法的特点,即可免费获取。