![cover](https://img-blog.csdnimg.cn/img_convert/1f20816e15694cf3b56262c1f87e2a14.png)
getter与setter方法
在Java中,getter方法用于获取类的私有属性的数值,而setter方法用于设置或修改类的私有属性的数值。命名规范。
目录
使用如下软件:
Getter和Setter方法的定义
在Java中,getter方法用于获取类的私有属性的数值,而setter方法用于设置或修改类的私有属性的数值。
创建一个简单的类
创建一个Student类,在类中定义三个成员变量
name(名字),age(年龄),major(专业)
public class Student { //定义一个学生类(Student)
private String name; //成员变量"名字"
private int age; //成员变量"年龄"
private String major; // 成员变量"专业"
}
创建Getter方法
getter方法
返回对象内部的成员变量的值
getter方法用于获取对象的属性值。通常以get
开头,后接属性名,例如getName()
用于获取name
属性的值。
格式:
[访问修饰符] 成员变量类型 getXxx(){
return 成员变量;
}
要注意命名规范:
根据Java的命名规范,getter方法的命名应该以get
开头,后接属性名(成员变量) --首字母大写
例如:getName(),getAge().getMajor()
创建三个getter方法来获取name,age,major属性的值:
public class Student { //定义一个学生类(Student)
private String name; //成员变量"名字"
private int age; //成员变量"年龄"
private String major; // 成员变量"专业"
//getter方法
public String getName() { //读name的值
return name;
}
public int getAge() { //读age的值
return age;
}
}
创建Setter方法
setter方法
用来设置成员变量,可以在方法里面过滤掉一些不合理的值
格式:
[访问修饰符] void setXxx(成员变量类型 参数) {
成员变量=参数;
}
- setter方法可以在设置属性值之前进行数据检查和验证,并在必要时抛出异常。
- 要命名规范,以set开头后面加属性名(成员变量)--首字母要大写
- 例如:setName(),setAge().setMajor()
创建一个setter方法来设置name属性的值:
对name,age,major进行赋值,并对age进行异常声明和抛出异常,对抛出异常语句不要忘记后面加分号 ";" --(英文状态下)
public class Student { //定义一个学生类(Student)
private String name; //成员变量"名字"
private int age; //成员变量"年龄"
private String major; // 成员变量"专业"
//getter方法
public String getName() { //读name的值
return name;
}
public int getAge() { //读age的值
return age;
}
}
// setter方法
//对name,age,major进行赋值,并对age进行异常声明和抛出异常
public void setName(String name) {
this.name = name;
}
public void setAge(int age) throws Exception { // 进行异常声明
if (age < 0) {
throw new Exception("年龄不符合"); // 抛出异常
} else {
this.age = age;
}
}
public void setMajor(String major) {
this.major = major;
}
}
getter与setter中代码处理
getter、setter用于读取和写入成员变量值,可在方法中增加代码进行数据处理
1.使用setter可以对输入的数据进行检验
2.使用getter可以对读出的数据进行处理
使用Getter和Setter方法
创建一个测试类(TestStudent),age(年龄)可能会出现异常,并进行异常捕获。
public class TestStudent {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Student S1 = new Student();
// 捕获异常
try {
S1.setName("小农");
S1.setAge(20);// 可能出现异常值
S1.setMajor("大数据技术");
System.out.println("名字为:" + S1.getName());
System.out.println("年龄为:" + S1.getAge());
System.out.println("专业为:" + S1.getMajor());
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
输出结果如下:
程序举例:
(1)建立时间类
对每个成员变量,增加getter与setter,在setter中进行数据检查,
如果数据不合理,应给抛出异常信息。
(2)创建两个对象,使用setter为对象设置值,并按6个数位hh:mm:ss(2个表示小时,2个表示分钟、2个表示秒)输出相关信息。
hour,minute,second可能出现异常,要进行异常声明与抛出异常,进行异常声明时语句后面不要忘记加分号 ";" --(英文状态下)
public class Time {
private int hour;
private int minute;
private int second;
//getter方法
public int getHour() {
return hour;
}
public int getMinute() {
return minute;
}
public int getSecond() {
return second;
}
//setter方法
//并对hour,minute,second进行异常处理
public void setHour(int hour) throws Exception { //异常声明
if (hour < 0 || hour > 23) {
throw new Exception("小时Hour数不合理,必须在0~23之间"); //抛出异常
} else {
this.hour = hour;
}
}
public void setMinute(int minute) throws Exception { //异常声明
if (minute < 0 || minute > 59) {
throw new Exception("分钟minute数不合理,必须在0~59之间"); //抛出异常
} else {
this.minute = minute;
}
}
public void setSecond(int second) throws Exception { //异常声明
if (second < 0 || second > 59) {
throw new Exception("秒数second不合理,必须在0~59之间"); //抛出异常
} else {
this.second = second;
}
}
//总的秒数,
//一个小时3600秒,一分钟60秒
public int timePeriod() {
int totalSeconds = hour * 3600 + minute * 60 + second;
return totalSeconds;
}
}
测试类如下:
创建测试类TestTime,并进行异常捕获
public class TestTime {
public static void main(String[] args) {
// TODO 自动生成的方法存根
//创建两个时间对象,t1,t2
try {
Time t1 = new Time();
t1.setHour(8);
t1.setMinute(30);
t1.setSecond(20);
System.out.printf("时间为:%02d:%02d:%02d\n", t1.getHour(),
t1.getMinute(), t1.getSecond());
System.out.printf("时间t1间隔:%02d", t1.timePeriod());
} catch (Exception e) {
System.out.println(e.getMessage());
}
System.out.println();
try {
Time t2 = new Time();
t2.setHour(23);
t2.setMinute(30);
t2.setSecond(20);
System.out.printf("时间为:%02d:%02d:%02d\n", t2.getHour(),
t2.getMinute(), t2.getSecond());
System.out.printf("时间t2间隔:%02d", t2.timePeriod());
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
代码输出结果如下:
总结:
Getter和Setter方法是面向对象编程(OOP)中的重要概念, Getter和Setter方法是封装数据的重要手段。通过这些方法,我们可以保护类的内部状态不被外部直接访问或修改,从而提高代码的可维护性和安全性。同时,通过合理地使用Getter和Setter方法,我们可以更容易地实现数据验证、转换等操作,使代码更加健壮和灵活。
1. 根据Java的命名规范,getter和setter方法的命名应该以get
和set
开头,后接属性名(首字母大写),要进行异常判断。
2.方法参数:Getter方法通常没有参数,而Setter方法应该有一个参数,用于接收要设置的值。
3.方法返回类型:Getter方法应该返回属性的类型,而Setter方法通常没有返回值。
4.异常处理:如果Setter方法可能会抛出异常(例如,在尝试将非法值设置给属性时),那么应该使用try-catch块来捕获并处理这些异常。
5.访问修饰符:Getter和Setter方法的访问修饰符应该与对应的属性保持一致。如果属性是私有的(private),那么Getter和Setter方法也应该设置为私有访问修饰符(private)。
![Logo](https://devpress.csdnimg.cn/79de2bf0b7994defa4242ef90d5513fa.jpg)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)