Java学习总结第二十三天Java试讲第二讲准备(二)

目标

理解封装的概念

掌握private关键字


为什么需要构造方法?

开发教员类Teacher4,要求:

具有属性:姓名、年龄、学历、职位

具有行为:自我介绍

public class Teacher4 {

  private Stringname// 姓名

  private int age;// 年龄

  private Stringeducation// 学历

  private Stringposition// 职位

  public String introduction() {

    return "大家好!我是" +name + ",我今年" + age + "岁,学历" + education + ",目前职位是"position;

  }

  public String getName() {

    return name;

  }

  public void setName(String myName) {

    name = myName;

  }

  // 以下是其他属性的setter、getter方法,此处省略

}

编写一个测试类,要求:

实例化一个教员对象,并对其初始化

在控制台输出该教员的自我介绍

public class Teacher4Test {

  public static void main(String[] args) {

    Teacher4 teacher = new Teacher4();

    teacher.setName("李芳");

    teacher.setAge(23);

    teacher.setEducation("本科");

    System.out.println(teacher.introduction());

  }

}

输出:大家好!我是李芳,我今年23岁,学历本科,目前职位是null

 

Teacher4中有太多的属性及对应的setter方法,在初始化时,很容易就忘记了,有没有可能简化对象初始化的代码?

要简化对象初始化的代码,可以通过构造方法来解决。

 

什么是构造方法?

构造方法负责对象成员的初始化工作,为实例变量赋予合适的初始值

构造方法必须满足以下语法规则:

1、方法名与类名相同

2、没有返回类型

使用new关键字调用构造方法

通过带参数的构造方法,显式地为实例变量赋予初始值

public class Teacher6 {

  private Stringname// 教员姓名

  private int age;// 年龄

  private Stringeducation// 学历

  private Stringposition// 职位

  // 带参数的构造方法

  public Teacher6(String pName,int pAge, String pEducation, String pPosition) {

    name = pName;

    age = pAge;// 可以增加对age等属性的存取限制条件

    education = pEducation;

    position = pPosition;

  }

  public String introduction() {

  return "大家好!我是" +name + ",我今年" + age + "岁,学历" + education + ",目前职位是"

     + position;

  }

}

通过调用带参数的构造方法,简化对象初始化的代码

public class Teacher6Test {

  public static void main(String[] args) {

    Teacher6 teacher = new Teacher6("李芳", 23,"本科""咨询师");

    System.out.println(teacher.introduction());

  }

}

输出:大家好!我是李芳,我今年23岁,学历本科,目前职位是咨询师

 

构造方法重载:

public class Teacher7 {

  private Stringname// 教员姓名

  private Stringschool = "北京中心"// 所在中心

  public Teacher7(String name) {

    this.name = name;// 设定教员姓名

  }

  public Teacher7(String name, String school) {

    this.name = name;// 设定教员姓名

    this.school = school;// 设定教员的所在中心

  }

  public String introduction() {

    return "大家好!我是" +school + "的" + name;

  }

}

通过调用不同的构造方法来表达对象的多种初始化行为

例如:

默认情况下,教师来自北京中心,初始化时,只需提供教员姓名

有时,需要提供所在中心名称及教员姓名

public class Teacher7Test {

  public static void main(String[] args) {

    Teacher7 teacher1 = new Teacher7("李芳");

    System.out.println(teacher1.introduction());

    Teacher7 teacher2 = new Teacher7("张欣","天津中心");

    System.out.println(teacher2.introduction());

  }

}

输出:大家好!我是北京中心的李芳

    大家好!我是天津中心的张欣

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值