一.无参构造方法和有参构造方法:
参构造方法要结合get xxx()方法和set xxx()方法使用
例如以创建一个学生类,该学生的属性(成员变量)有姓名,性别,年龄;行为是吃,睡觉,学习
//无参构造方法
class Student{
private String name;
private String gender;
private int age;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getGender() {
return gender;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public String eat(String food){
return "吃"+food;
}
public void sleep(){
System.out.println("学累了就睡觉!!!");
}
public String study(String className){
return "正在学习"+className;
}
}
public class StudentTest {
public static void main(String[] args) {
Student s = new Student();
s.setName("梁海博");
s.setGender("男");
s.setAge(22);
System.out.println("学生的姓名:"+s.getName()+"\n"+"学生的性别:"+s.getGender()+"\n"+"学生的年龄:"+s.getAge());
String result = s.eat("香蕉");
System.out.println(result);
s.sleep();
System.out.println(s.study("JavaEE"));
}
}
结果:
有参构造方法:
//有参构造方法
class Student1{
private String name;
private String gender;
private int age;
public Student1(String name,String gender,int age){
this.name=name;
this.gender=gender;
this.age=age;
}
public String getName(){
return name;
}
public String getGender(){
return gender;
}
public int getAge(){
return age;
}
public void eat(){
System.out.println("吃辣条!!");
}
public void sleep(){
System.out.println("睡大觉!!!");
}
public void study(){
System.out.println("学JavaEE!!!!");
}
}
public class StudentTest1 {
public static void main(String[] args) {
Student1 s = new Student1("梁海博","男",22);
System.out.println("学生的姓名:"+s.getName()+"\n"+"学生的性别:"+s.getGender()+"\n"+"学生的年龄:"+s.getAge());
s.eat();
s.sleep();
s.study();
}
}
结果:
二.面试题
简述:以下代码完成了哪些事情?
Student s = new Student();
答:
(1)加载Student.class字节码文件(类就加载一次)
(2)在栈内存中Student类型的s变量开辟栈内存空间
(3)在堆内存中申请空间地址
(4)在堆内存中给Student类的所有成员进行默认初始化
(5)然后在通过构造方法进行数据初始化
(6)默认初始化完毕后,产生一个堆内存空间地址
(7)将堆内存空间地址值赋值给栈内存的这个变量
(8)栈内存的变量s指向堆内存地址