您的位置 首页 java

Java构造方法(零基础学习)

作者:Grady_Camel

来源:简书

一个新对象初始化的最终步骤是通过new关键字去调用对象的 构造方法 ,构造方法必须满足以下几个条件

方法

(1)方法名必须与类名称完全相匹配

(2)不要声明返回类型。

(3)不能被static final synchronized abstract native 修饰,且不能被return语句返回值

创建某类的对象要遵循如下语法:

类名 对象名=new 类名();

使用new关键字创建对象时要注意以下3个方面:

为对象实例分配内存空间

调用构造

返回对象实例的引用

当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。除了基本数据类型之外,其余的变量类型都是引用类

创建对象在内存中的情况如图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构造方法(零基础学习)

文章地址:https://www.zhihuclub.com/174217.shtml

关于作者: 智云科技

热门文章

网站地图