java 构造函数 构造方法_Java 构造函数(构造函数/构造方法)
大家好,又见面了,我是你们的朋友全栈君。
我们先来看一下什么是构造器:
1、构造器也叫构造方法或构造函数,分为有参构造器和无参构造器;
2、构造器也是一种方法,只不过是一种特殊的方法,它会在对象创建的时候被调用;
3、构造器最大的作用就是在创建对象的时候进行对象的初始化,有参构造器可以实现对象传参(后面会比较着来看有参构造器方便在哪儿了);
4、一个类可以有零个(如果没有自己定义编译器会帮你提供无参构造器)或多个构造器(【重载】不知道重载定义的小伙伴可以先记下概念);
5、构造器不能被子类继承,Java中子类会自动调用父类的构造器(同样,不了解的可以先记下概念或者跳过)
前面既然说了构造器是一种特殊的方法,我们就来看一下构造方法和普通方法的区别:
1、命名:构造器的方法名必须和类名相同,一般方法的方法名在命名规范的情况下可以随便定义。
2、修饰符:构造器不能被static、final、synchronized、abstract和native修饰
3、返回值:构造器没有返回值(但是不需要写void),一般方法要有返回值或者无返回值(void)
来看一下无参构造器的代码,同时看一下无参构造器的情况下(不定义构造器同理)是如何给属性赋值的:
1 package test;
public class Student01 {
//定义属性
public String name;
public int age;
public String sex;
/**
* 无参的构造方法:
* 如果不写编译器会自动加上;只要定义了构造器,不管是有参还是无参,编译器都不会再帮你定义
*/
public Student01() {//new对象的时候会调用这个无参构造方法,它会给new出来的对象一个初始化值(了解即可:数字为 0,字符为 null,布尔为 false,所有引用都是 null)
System.out.println(“创建对象的过程中调用我了,在s1.name = ‘张三’;前执行,所以我在main方法的打印语句前打印”);
}
public static void main(String[] args) {
Student01 s1 = new Student01();//执行这一步的时候会自动调用Student01()
//通过 对象.属性来给属性赋值
s1.name = “张三”;
s1.age = 18;
s1.sex = “男”;
System.out.println(“姓名:”+s1.name+”\n性别:”+s1.sex+”\n年龄:”+s1.age);
}
}
结果:
创建对象的过程中调用我了,在s1.name = ‘张三’;前执行,所以我在main方法的打印语句前打印
姓名:张三
性别:男
年龄:18
再来看有参构造器(给属性赋值不用再一个一个通过对象.属性)
1 package test;
public class Student02 {
// 定义属性
public String name;
public int age;
public String sex;
//定义有参构造方法
public Student02(String name, int age, String sex) { //类似于普通带参方法 public void add(int a,int b){}
this.name = name; //将形参变量的值,赋给成员变量。 this指当前对象,这里不会的小伙伴不用慌它们的意思是:
this.age = age; //拿name来举例this.name = name;就是将下面传过来的name值(张翠花)赋值给上面定义属性的(public String name;)name
this.sex = sex;
}
public static void main(String[] args) {
Student02 s2 = new Student02(“张翠花”, 18, “女”);//调用构造器的时候传参(改变默认初始化),类似于调用普通带参方法 add(1,1);
System.out.println(“姓名:”+s2.name+”\n性别:”+s2.sex+”\n年龄:”+s2.age);
}
}
构造器不只可以定义一个,可以是零个(以前创建对象没写构造器的时候)或多个
1 package test;
public class Student02 {
// 定义属性
public String name;
public int age;
public String sex;
//定义有参构造方法
public Student02(String name, int age, String sex) { //类似于普通带参方法 public void add(int a,int b){}
this.name = name;
this.age = age;
this.sex = sex;
}
//定义无参构造方法
public Student02() {
}
//定义一个两个参数的构造方法(重载)不能和刚才的一样 注意:名字依然要和类名保持一致
public Student02(String name, String sex){
this.name = name;
this.sex = sex;
}
public static void main(String[] args) {
Student02 s2 = new Student02(“张翠花”, 18, “女”);//调用构造器的时候传参,类似于调用普通带参方法 add(1,1);
System.out.println(“姓名:”+s2.name+”\n性别:”+s2.sex+”\n年龄:”+s2.age);
System.out.println(“———————“);
//创建一个新的对象
Student02 s3 = new Student02(“石榴姐”, “女”);//这里可以用前面三个构造器的任意一个
System.out.println(“姓名:”+s3.name+”\n性别:”+s3.sex+”\n年龄:”+s3.age);
//因为这里用的是没有给年龄传值的构造器,所以打印的年龄是初始值0
}
}
结果:
姓名:张翠花
性别:女
年龄:18
———————
姓名:石榴姐
性别:女
年龄:0
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
上一篇: Java 中的构造函数(构造方法
推荐阅读
-
java 构造函数 构造方法_Java 构造函数(构造函数/构造方法)
-
Java 中的构造函数(构造方法
-
什么是 JAVA 构造函数
-
Golang 面向对象编程的构造函数 [struct&new
-
Java Notes 9:构造方法、内部类
-
构造方法
-
教姐妹们学Java(二十五):了解Java中的构造方法(1)
-
构造函数和析构函数方法的区别
-
创建一个名为 "人 "的类:属性:姓名、年龄、性别、身高 行为:交谈、添加、更改姓名 编写构造方法,为所有属性赋值; (2) 创建主类:创建一个对象:姓名 "张三",性别 "男",年龄 18,身高 1.80;让该对象调用成员方法:说 "你好!创建一个名为 "张三 "的对象,性别为 "男",年龄为 18 岁,身高为 1.80;让该对象调用成员方法:说 "你好!"计算 23+45 的值。将名称改为 "李四"。
-
C++ 构造函数和析构函数