- 一、构造方法
- 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.构造方法作用
- 完成对属性或者成员变量赋值
构造方法是一个特殊的方法,具体有两点:
- 构造方法的名字必须与类名一致
- 构造方法必须没有返回值类型,也就是:不需要编写void
4.在IDEA中,构造方法的快捷键public 类名([参数列表]){
}
-
第一种方式:按Alt + Insert键,选择第一项Constructor,其中Constructor表示构造器、构造方法、构造函数,然后按回车键,再按两次Tab键,则生成无参构造方法
- 注意:一般无参构造方法中,没有要求方法体中不编写任何内容,也就是:当执行无参构造方法时,属性依然是默认值
-
第二种方式:按Alt + Insert键,选择第一项Constructor,然后按回车键,鼠标左键点击第一个要赋值的属性,然后再按Ctrl + 鼠标左键点击其他要赋值的属性,按回车键,则生成带参构造方法,完成对部分属性赋值
-
第三种方式:按Alt + Insert键,选择第一项Constructor,然后按回车键,再按Ctrl+ A表示全选,则生成带参构造方法,完成对所有属性赋值
---当创建对象同时执行相匹配的构造方法
也就是:当创建对象时,如果小括号中没有内容则执行无参构造方法,否则执行带参相匹配的构造方法
6.构造方法注意事项
- 当一个类中没有编写构造方法,则系统会提供一个默认的无参的构造方法,称为隐式构造方法
也就是说:一个类如果没有编写构造方法则只有一个构造方法 - 当一个类中编写构造方法,,则系统不会提供默认的无参构造方法,称为显式构造方法
也就是说:一个类中编写几个构造方法,则就共计有几个构造方法 - 当在一个类中编写构造方法时,建议:先将无参构造方法编写上, 然后再编写需要的带参构造方法,否则出现编译错误
- 什么是构造方法重载?
- 在同一个类中,构造方法的名字必须相同,参数列表必须不同(个数不同、类型不同、顺序不同),至少编写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 ………
- 类
- ………
- 第一种方式:将对象的内存地址赋给左侧的变量名称
- 比如:c = new Car();
- 第二种方式:将null值赋给左侧的变量名称
- 比如:c = null;
1.空指针异常属于运行错误java.lang.NullPointerException
2.出现空指针异常原因
当前对象名中存放的是null,也就是没有存放对象的地址,也就没有指向某个对象,因此就不能访问对象中的属性或者对象中的方法,如果非要访问则就出现空指针异常
3.出现空指针异常解决办法
在访问对象中的属性或对象中的方法之前,必须保证对象名中存放的是对象的地址
比如:c = new Car();
- 基本数据类型作为参数传递
- 引用数据类型作为参数传递
Code
作业创建新的模块HWDay10,建议每个题存放在一个包中
1、
编写图书类:
属性:编号,名称,价格、作者
定义方法:显示图书的信息。
测试类:
1)创建图书对象同时执行无参构造方法,调用方法显示信息
2)创建图书对象同时执行带2个参数构造方法完成对名称和作者赋值,调用方法显示信息
3)创建图书对象同时执行带3个参数构造方法完成对编号、名称、价格赋值,调用方法显示信息
4)创建图书对象同时执行带4个参数构造方法完成对所有属性赋值,调用方法显示信息
2、
编写狗类:
属性:昵称、年龄、性别、体重、品种
方法:显示狗的信息
测试类:
1)创建狗对象同时执行无参构造方法 ,调用方法显示信息
2)创建狗对象同时执行带3个参数构造方法完成对属性赋值,调用方法显示信息
3)创建狗对象同时执行带5个参数构造方法完成对所有属性赋值,调用方法显示信息
3、
编写电脑类:
属性:品牌、价格、颜色、尺寸
方法:显示电脑的信息
测试类:
1)创建电脑对象同时执行无参构造方法 ,调用方法显示信息
2)创建电脑对象同时执行带2个参数构造方法完成对属性赋值,调用方法显示信息
3)创建电脑对象同时执行带4个参数构造方法完成对所有属性赋值,调用方法显示信息
4、
编写出版社类:
属性:出版社编号,出版社名称,出版社地址
定义:无参构造方法、有参构造方法
方法:显示出版社的信息
编写图书类:
属性:编号,名称,单价,数量, 作者,出版社
定义方法:显示图书的信息(编号,名称,单价,数量, 作者,出版社名称,出版社地址)
测试类:
创建图书对象通过调用带参构造方法完成对属性赋值,并调用显示信息方法
创建图书对象调用无参构造方法,并调用显示信息方法
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)