Java类中的构造方法
开发工具与关键技术:eclipse java 作者:黄济民 撰写时间:2021.6.3
package com.hjm.javase.work01;
/**
*
1.构造方法又被称为构造函数/构造器/Constructor
2.构造方法语法结构:
[修饰符列表] 构造方法名(形式参数列表){
构造方法体;
}
3.回顾普通方法的语句结构:
[修饰符列表] 返回值类型 方法名(形式参数列表){
方法体;
}
4.对于构造方法来说,"返回值类型 "不需要指定,并且也不能写void,
只要写上void,那么这个方法就成为普通的方法了。
5.对于构造方法来说,构造方法的方法名必须和类名保持一致。
6.构造方法的作用:
构造方法存在的意义是,通过构造方法的调用,可以创造对象。
7.构造方法应该怎么调用?
- 普通方法是这样调用的:方法修饰符中有static的时候:类名.方法名(实参列表),
方法修饰符列表中没有static的时候:引用.方法名(实参列表)
- new 构造方法名(实参列表)
8.构造方法调用执行之后,有返回值吗?
每一个构造方法实际上执行结束之后都有返回值,但是这个"return 值;"这样的语句不需要写。
构造方法结束的时候java程序自动返回值。
并且返回值类型是构造方法所在类的类型。由于构造方法的返回值类型就是类本身,所以返回值类型不需要编写
9.当一个类没有定义任何构造方法的话,系统默认给该类提供一个无参数的构造方法,这个构造方法被称为缺省构造器
10.当一个类显示的构造方法定义出来了,那么系统则不再默认为这个类提供缺省构造器。
建议开发中手动的为当前类提供无参数构造方法。因为无参数构造方法太常用了。
11.构造方法支持重载机制。在一个类当中编写多个构造方法,这多个构造方法显然已经构成方法重载机制。
*/
public class ConstructorText01 {
public static void main(String[] args) { //创建User对象 //调用User类的构造方法来完成对象的创建 //一下程序创建了4个对象,只要构造函数调用就会创建对象,并且一定是在“堆内存”中开辟空间。 //new后面的User是构造方法的方法名,方法才带有括号 User u1 = new User(); User u2 = new User(10); User u3 = new User("zhangsan"); User u4 = new User(10,"zhangsan"); //普通方法调用 //调用带有static的方法 类名. ConstructorText01.doSome(); //在本类调用方法可以直接调用 doSome(); //调用没有static的方法 引用. //doOther方法在ConstructorText01类当中,所以需要创建ConstructorText01对象 //创建ConstructorText01对象,调用无参数构造器。一个类中没有任何构造方法的话,系统会默认提供无参构造器 ConstructorText01 d = new ConstructorText01(); d.doOther(); //普通方法调用 User.fangfa(10); } public static void doSome() { System.out.println("do some!"); } //这个方法不带有static所以要创建对象 引用.方法名(实参列表) 引用就是创建对象赋值给变量中的那个变量就是引用 public void doOther() { System.out.println("do other!"); }
}
package com.hjm.javase.work01;
/**
1.创建对象
2.创建对象的同时,初始化实例变量的内存空间。【给实例变量赋值】
3.局部变量和成员变量在jvm的栈内存中的存储的
4.引用:是一个变量,不一定是局部变量,还可能是成员变量。引用保持了内存地址,指向了堆内存当中的对象。
是在类加载的时候吗?
不是,因为类加载的时候只加载了代码片段,还没来得及创建对象,所以此时实例变量并没有初始化。
实际上,实例变量的内存空间是在构造方法执行的过程当中完成开辟的。完成初始化的。
系统在默认赋值的时候,也是在构造方法执行过程当中完成的赋值。
Computer com; //com是一个引用【实例变量】
public static void doSome(){
Computer cc; //cc是一个引用【局部变量】
}
*/
public class ConstructorText02 {
public static void main(String[] args) { //按ctrl键,鼠标移动到查看的元素上,出现下划线的时候开始单击 //另外,在一个类当中元素过多,想快速查看,在当前类使用ctrl + o 快捷键吗,然后输入要查找的元素。 //创建对象 Account act1 = new Account(); System.out.println("账号:" + act1.getActno()); System.out.println("余额:" + act1.getBalance()); Account act2 = new Account("110"); System.out.println("账号:" + act2.getActno());//110 System.out.println("余额:" + act2.getBalance());//0.0 Account act3 = new Account(10000.0); System.out.println("账号:" + act3.getActno());//null System.out.println("余额:" + act3.getBalance());//10000.0 Account act4 = new Account("ABC1231",10000.0); System.out.println("账号:" + act4.getActno());//ABC1231 System.out.println("余额:" + act4.getBalance());//10000.0 }
}