构造方法
Posted lyywj170403
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构造方法相关的知识,希望对你有一定的参考价值。
构造方法:给对象的数据进行序列化
格式:1.方法名与类名相同
2.没有返回值类型,没有void
3.没有具体的返回值
(3)构造方法的注意事项
A:如果我们没写构造方法,系统将提供一个默认的无参构造方法
B:如果我们给出了构造方法,系统将不再提供默认构造方法
如果这个时候,我们要使用无参构造方法,就必须自己给出。
推荐:永远手动自己给出无参构造方法。
(4)给成员变量赋值的方式
A:setXxx()
B:带参构造方法
(5)标准案例
1 /* 2 * 给成员变量赋值方法: 3 * 1.setxx()方法 4 * 2.构造方法 5 * 输出成员变量方法 6 * 1.getxx()方法 7 * 2.调用show()方法 8 */ 9 public class Student { 10 11 private String name; 12 13 private int age; 14 15 //构造方法 16 public Student(){ 17 } 18 19 public Student(String name, int age){ 20 this.name = name; 21 this.age = age; 22 } 23 24 public String getName(){ 25 return name; 26 } 27 28 public void setName(String name){ 29 this.name = name; 30 } 31 32 public int getAge(){ 33 return age; 34 35 } 36 37 public void setAge(int age){ 38 this.age = age; 39 } 40 41 //输出所有成员变量值 42 public void show(){ 43 System.out.println(name + "-----" + age); 44 } 45 }
1 public class Test { 2 3 public static void main(String[] args) { 4 /* 5 * 方法一给成员变量赋值 6 * 无参构造+setxx() 7 */ 8 Student s1 = new Student(); 9 s1.setName("张三"); 10 s1.setAge(34); 11 //输出值 12 System.out.println(s1.getName() + "-------" + s1.getAge()); 13 s1.show(); 14 15 /* 16 * 方法二给成员变量赋值 17 * 18 */ 19 Student s2 = new Student("张三",20); 20 System.out.println(s2.getName() + "-------" + s2.getAge()); 21 s2.show(); 22 } 23 }
测试:
1 public class Student {
2
3 private String name;//初始化为null
4
5 private int age;//初始化为0
6
7 public Student(){
8 System.out.println("无惨构造方法");
9 }
10
11 //构造方法的重载格式
12 public Student(String name){
13 System.out.println("这是一个带String类型的构造方法");
14 this.name = name;
15 }
16
17 public Student(int age){
18 System.out.println("这是一个带int类型的构造方法");
19 this.age = age;
20 }
21
22 public Student(String name, int age){
23 System.out.println("这是一个带多个类型的构造方法");
24 this.name = name;
25 this.age = age;
26 }
27
28 public void show(){
29 System.out.println(name + "-----" + age);
30 }
31 }
1 public class Test {
2
3 public static void main(String[] args) {
4 //创建对象
5 Student s = new Student();
6 s.show();
7 System.out.println("------------");
8
9 //创建对象2
10 Student s2 = new Student("张三");
11 s2.show();
12 System.out.println("------------");
13
14 //创建对象3
15 Student s3 = new Student(34);
16 s3.show();
17 System.out.println("------------");
18
19 //创建对象4
20 Student s4 = new Student("张三", 34);
21 s4.show();
22 System.out.println("------------");
23
24 }
25 }
8:代码:Student s = new Student();做了哪些事情?
(1)把Student.class文件加载到内存
(2)在栈内存为s开辟空间
(3)在堆内存为学生对象申请空间
(4)给学生的成员变量进行默认初始化。
(5)给学生的成员变量进行显示初始化。
(6)通过构造方法给成员变量进行初始化。
(7)对象构造完毕,把地址赋值给s变量
1 public class Student {
2
3 private String name;//初始化为null
4
5 private int age;//初始化为0
6
7 public Student(){
8 System.out.println("构造方法");
9 }
10
11 }
1 public class Test {
2
3 public static void main(String[] args) {
4 //创建对象
5 Student s = new Student();
6
7 System.out.println(s);
8 /*
9 * 构造方法
10 [email protected]
11 */
12 }
13 }
以上是关于构造方法的主要内容,如果未能解决你的问题,请参考以下文章
无法解析片段中的 ViewModelProvider 构造?
Android 逆向ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )(代码片段
Android 逆向ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )(代码片段