Java初学(九)构造方法

Java初学(九)构造方法,第1张

文章目录
  • 一、构造方法
    • 1.构造方法作用
    • 2.什么是构造方法
    • 3.构造方法的语法格式:
    • 4.在IDEA中,构造方法的快捷键
    • 5.构造方法如何执行?
    • 6.构造方法注意事项
    • 7.构造方法的重载
    • 8. 变量按数据类型分为
    • 9. 对引用数据类型赋值方式有两种(重点)
    • 10. 空指针异常(重点)
    • 11. 对象中的属性可以是用户自定义的类作为数据类型![在这里插入图片描述](http://www.kaotop.com/file/tupian/20220430/6093c9a2c82245d5a83bac47f1f45eca.png)![在这里插入图片描述](http://www.kaotop.com/file/tupian/20220430/4fb42eed2c384912bbef919cc7917337.png)
    • 12. 参数传递
  • 代码
  • 作业


一、构造方法 1.构造方法作用
  • 完成对属性或者成员变量赋值
2.什么是构造方法

构造方法是一个特殊的方法,具体有两点:

  • 构造方法的名字必须与类名一致
  • 构造方法必须没有返回值类型,也就是:不需要编写void
3.构造方法的语法格式:

public 类名([参数列表]){
}

4.在IDEA中,构造方法的快捷键
  • 第一种方式:按Alt + Insert键,选择第一项Constructor,其中Constructor表示构造器、构造方法、构造函数,然后按回车键,再按两次Tab键,则生成无参构造方法

    • 注意:一般无参构造方法中,没有要求方法体中不编写任何内容,也就是:当执行无参构造方法时,属性依然是默认值
  • 第二种方式:按Alt + Insert键,选择第一项Constructor,然后按回车键,鼠标左键点击第一个要赋值的属性,然后再按Ctrl + 鼠标左键点击其他要赋值的属性,按回车键,则生成带参构造方法,完成对部分属性赋值

  • 第三种方式:按Alt + Insert键,选择第一项Constructor,然后按回车键,再按Ctrl+ A表示全选,则生成带参构造方法,完成对所有属性赋值

5.构造方法如何执行?
---当创建对象同时执行相匹配的构造方法
也就是:当创建对象时,如果小括号中没有内容则执行无参构造方法,否则执行带参相匹配的构造方法

6.构造方法注意事项
  • 当一个类中没有编写构造方法,则系统会提供一个默认的无参的构造方法,称为隐式构造方法
    也就是说:一个类如果没有编写构造方法则只有一个构造方法
  • 当一个类中编写构造方法,,则系统不会提供默认的无参构造方法,称为显式构造方法
    也就是说:一个类中编写几个构造方法,则就共计有几个构造方法
  • 当在一个类中编写构造方法时,建议:先将无参构造方法编写上, 然后再编写需要的带参构造方法,否则出现编译错误
7.构造方法的重载
  • 什么是构造方法重载?
    • 在同一个类中,构造方法的名字必须相同,参数列表必须不同(个数不同、类型不同、顺序不同),至少编写2个构造方法
  • 当构造方法构成重载以后如何确定执行的是哪个构造方法?
    • 在调用时,会自动找相匹配的构造方法执行,否则出现编译错误
  • 构造方法重载好处
    • 在调用时,相对使用更灵活
// Student.java
public class Student {
     int id;
     String name;
     int age;
     char gender;
     String address;
     double score;
     // 注意:下面这个方法不属于构造方法,但是也不报错
     public void Student() {
     }
     // 编写无参构造方法
     public Student() {
          // 加入实现对名字、年龄、性别属性赋值
          name = "庸子";
          age = 81;
          gender = '男';
     }
     // 带参构造,完成学号、名字赋值
     public Student(int id, String name) {
          this.id = id;
          this.name = name;
     }
     // 带参构造,完成学号、名字、年龄赋值
     public Student(int id, String name, int age) {
          this.id = id;
          this.name = name;
          this.age = age;
     }
     // 带参构造,完成学号、名字、年龄、性别赋值
     public Student(int id, String name, int age, char gender) {
          this.id = id;
          this.name = name;
          this.age = age;
          this.gender = gender;
     }
     // 带参构造,完成学号、名字、年龄、性别、地址赋值
     public Student(int id, String name, int age, char gender, String address) {
          this.id = id;
          this.name = name;
          this.age = age;
          this.gender = gender;
          this.address = address;
     }
     // 带参构造,完成学号、名字、年龄、性别、地址、分数赋值
     public Student(int id, String name, int age, char gender, String address, double score) {
          this.id = id;
          this.name = name;
          this.age = age;
          this.gender = gender;
          this.address = address;
          this.score = score;
     }
     // 编写方法:输出学生的所有信息
     public void print(){
          System.out.println( "学号:" + id + '\r' +  " 姓名:" + name + " 年龄:" + age + " 性别:" + gender + " 地址:" + address + " 分数:" + score);
     }
}
// Test01.java
package demo1.com.yulesong.structure;

public class Test01 {
    public static void main(String[] args) {
        Student s = new Student();
        s.id = 20220425;
        s.name = "庸子";
        s.age = 18;
        s.gender = '男';
        s.address = "北京";
        s.score = 88.88;
        // 学号:20220425 姓名:庸子 年龄:18 性别:男 地址:北京 分数:88.88
        s.print();
        

        // 创建学生对象,打印无参构造
        Student s1 = new Student();
        // 学号:0 姓名:庸子 年龄:81 性别:男 地址:null 分数:0.0
        s1.print();
        // 创建学生对象,完成对学号、名字赋值,执行带两个参数的构造方法
        Student s2 = new Student(20220425,"张三");
        // 学号:20220425 姓名:张三 年龄:0 性别:  地址:null 分数:0.0
        s2.print();
        // 创建学生对象,完成对学号、名字、年龄赋值,执行带三个参数的构造方法
        Student s3 = new Student(20220425,"张四",19);
        // 学号:20220425 姓名:张四 年龄:19 性别:  地址:null 分数:0.0
        s3.print();
        // 创建学生对象,完成对所有属性赋值,执行带六个参数的构造方法
        Student s4 = new Student(20220425,"张五",20,'男',"北京",66.66);
        // 学号:20220425 姓名:张五 年龄:20 性别:男 地址:北京 分数:66.66
        s4.print();
    }
}
8. 变量按数据类型分为
  • 基本数据类型:在内存中存放的是真正的值
    • 又分为4大类,共计8种
  • 引用数据类型:在内存中存放的是地址(引用)
      • 系统提供的类,比如:String、System、Scanner ………
      • 用户自定义的类,比如:Student Car Computer Cat Dog ………
  • ………
9. 对引用数据类型赋值方式有两种(重点)
  • 第一种方式:将对象的内存地址赋给左侧的变量名称
    • 比如:c = new Car();
  • 第二种方式:将null值赋给左侧的变量名称
    • 比如:c = null;
10. 空指针异常(重点)

1.空指针异常属于运行错误java.lang.NullPointerException
2.出现空指针异常原因
当前对象名中存放的是null,也就是没有存放对象的地址,也就没有指向某个对象,因此就不能访问对象中的属性或者对象中的方法,如果非要访问则就出现空指针异常
3.出现空指针异常解决办法
在访问对象中的属性或对象中的方法之前,必须保证对象名中存放的是对象的地址
比如:c = new Car();

11. 对象中的属性可以是用户自定义的类作为数据类型 12. 参数传递
  1. 基本数据类型作为参数传递
  2. 引用数据类型作为参数传递
代码

Code

作业

创建新的模块HWDay10,建议每个题存放在一个包中

1、
编写图书类:
属性:编号,名称,价格、作者
定义方法:显示图书的信息。
测试类:
1)创建图书对象同时执行无参构造方法,调用方法显示信息
2)创建图书对象同时执行带2个参数构造方法完成对名称和作者赋值,调用方法显示信息
3)创建图书对象同时执行带3个参数构造方法完成对编号、名称、价格赋值,调用方法显示信息
4)创建图书对象同时执行带4个参数构造方法完成对所有属性赋值,调用方法显示信息

2、
编写狗类:
属性:昵称、年龄、性别、体重、品种
方法:显示狗的信息
测试类:
1)创建狗对象同时执行无参构造方法 ,调用方法显示信息
2)创建狗对象同时执行带3个参数构造方法完成对属性赋值,调用方法显示信息
3)创建狗对象同时执行带5个参数构造方法完成对所有属性赋值,调用方法显示信息

3、
编写电脑类:
属性:品牌、价格、颜色、尺寸
方法:显示电脑的信息
测试类:
1)创建电脑对象同时执行无参构造方法 ,调用方法显示信息
2)创建电脑对象同时执行带2个参数构造方法完成对属性赋值,调用方法显示信息
3)创建电脑对象同时执行带4个参数构造方法完成对所有属性赋值,调用方法显示信息

4、
编写出版社类:
属性:出版社编号,出版社名称,出版社地址
定义:无参构造方法、有参构造方法
方法:显示出版社的信息
编写图书类:
属性:编号,名称,单价,数量, 作者,出版社
定义方法:显示图书的信息(编号,名称,单价,数量, 作者,出版社名称,出版社地址)
测试类:
创建图书对象通过调用带参构造方法完成对属性赋值,并调用显示信息方法
创建图书对象调用无参构造方法,并调用显示信息方法

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/792156.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-05
下一篇 2022-05-05

发表评论

登录后才能评论

评论列表(0条)

保存