Java基础——构造方法
一、构造方法的定义
默认无参构造是这个样子
public Student(){}
首先,构造方法没有返回值,没有void,其次构造方法的名字和类名是相同的。
其实void也是有返回值,只不过是null(为空)
编译的是 .java文件,完成后是执行 .class文件
执行反编译如下:
//编译
E:\D>javac Demo.java
//反编译
E:\D>javap Demo.class
Compiled from "Demo.java"
public class Demo {
public Demo();
public static void main(java.lang.String[]);
}
二、构造方法传参
1.当发现运行结果是不同时,因为创建对象的时候传递的名字不相同,new关键字创建的实例每一个都有属于自己的属性(内存空间)
2.通过构造方法,给每个对象的name赋值了对象的名字,所以创建的实例的名字是不同的
3.传参的是三个方式(初始化成员变量):【1.点name方式 2.set和get方式 3.构造方法】
注:一般情况下如果局部变量不跟成员变量重名的话,方中调用成员变量是可以省略this的(就近原则)
一般情况下,构造方法形参会跟成员变量相同,会表明哪个成员变量赋值(规范)
//学生类
public class Student {
private String name;
private int age;
}
//有参构造
public Student(String name){
this.name=name;
}
public Student(String name,int age){
//就近原则,当属性名字和成员变量相同时加this
this.name=name;
this.age=age;
}
//无参构造,如果有了有参构造无参构造就失效了
public Student(){}
//赋值传参
Student s1=new Student("zs");
System.out.println(s1.getName());
Student s2=new Student("zs",22);
System.out.println(s2.getName()+","+s2.getAge());
一般来说,我们构造方法作用主要是给成员变量赋值,其他操作尽量不要在构造方法里面操作,除非没有其他方法可以实现
三、总结如下:
1.构造方法名字和类名相同,构造方法没有返回值,不需要void修饰
2.使用new关键字实例化对象时会用到构造方法
3.构造方法的参数与普通方法的参数的用法相同
4.当我们实现了构造方法之后,虚拟机不会赠送无参构造,如果想使用无参构造,只能自己定义
5.构造函数中this的作用和普通函数相同
6.构造方法主要用于给当前构造对象的成员变量赋值
四、构造方法重载
public Student(String name){
this.name=name;
}
public Student(String name,int age){
this.name=name;
this.age=age;
}
五、构造方法相互调用
this.属性名:操作属性
this.方法名:调用方法
this():调用自己的构造函数
public Student(String a){
//this()调用构造方法
this(a,0,null,null)
}
public Student(String name,int age,String gender,String password){
this.name=name;
this.age=age;
this.gender;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通