Java中Getter和Setter方法及主要区别
作者:我是小甘子
前言
Getter方法和Setter方法:
Getter方法和Setter方法是面向对象编程中常用的方法,用于访问和修改对象的属性(成员变量)。
什么是getter方法?
Getter方法(也称为访问器)用于获取对象的属性值。它通常是一个公共的非静态方法,不接受任何参数,并返回属性的值。Getter方法的命名常以"get"开头,后面跟着属性的名称。例如,如果有一个名为"age"的属性,对应的Getter方法命名为"getAge"。
格式:[访问修饰符] 成员变量类型 getXxx(){ return 成员变量;}
什么是setter方法?
Setter方法(也称为修改器)用于修改对象的属性值。它通常是一个公共的非静态方法,接受一个参数,并用参数的值来更新属性的值。Setter方法的命名常以"set"开头,后面跟着属性的名称。例如,如果有一个名为"age"的属性,对应的Setter方法命名为"setAge"。
格式:[访问修饰符] void setXxx(成员变量l类型 参数){ 成员变量=参数 }
getter方法和setter方法作用:
Getter和Setter方法的使用可以有效地控制对对象属性的访问和修改,提供了封装性和安全性。
1.通过Getter方法,其他类可以获取属性的值而不需要直接访问属性;
2.通过Setter方法,其他类可以修改属性的值而不需要直接修改属性。
这样可以控制属性的访问权限,进行必要的验证和操作。
class Person { private String name;//设置成员变量 private int age; public String getName(){//返回对象的成员变量的值 return name; } public int getAge() { return age; } //注意!当方法的参数与成员变量名相同时,使用this来引用成员变量 public void setName(String name) { this.name = name; } public void setAge(int age)throws Exception {//声明异常 if (age >= 0) { this.age = age; } else { throw new Exception("年龄不能为负数!");//抛出异常 }
设置测试类:
//捕获异常 try{ //可能出现异常的代码 Person person = new Person(); person.setName("Alice"); person.setAge(25); System.out.println("姓名:" + person.getName()); System.out.println("年龄:" + person.getAge()); }catch(Exception e){ //处理异常代码 System.out.println(ehetMessage(); } }
以上示例中,通过Getter和Setter方法,外部类可以访问和修改Person对象的name和age属性,保护了属性的访问和修改。
Getter和Setter方法的好处:
- 封装性:通过Getter和Setter方法,可以对属性的访问和修改进行控制。
- 验证和操作:可以在Getter和Setter方法中实现对属性的验证和操作,例如范围检查、格式转换等,确保数据的合法性。
- 可读性和可维护性:通过Getter和Setter方法可以提供更具描述性和可读性的代码,使代码更易于理解和维护。
Getter方法和Setter方法的主要区别:
- 访问级别:通常情况下,类的属性被声明为私有,以实现封装的概念,即防止外部直接访问和修改属性。为了让外部代码能够安全地访问和修改属性的值,在类中定义getter和setter方法。这样,外部代码就可以通过调用这些方法来获取和设置属性的值,而不需要直接访问属性本身。
- 方法命名:getter方法通常以get开头,后面跟着属性名,属性名的第一个字母大写。setter方法通常以set开头,后面跟着属性名,属性名的第一个字母大写。
- 参数:setter方法需要一个参数,用于设置属性的值。getter方法不需要参数。
- 返回值:getter方法需要返回属性的值,而setter方法不需要返回
总结
Getter和Setter方法是用于访问和修改对象属性的常用方法,它们提供了封装性,检验和操作的功能,通过规范的命名和方法签名,可以提高代码的可读性和维护性。在面向对象编程中,推荐使用Getter和Setter方法来操作对象的属性
实列:
1.创建学生类,对每个成员变量,增加getter与setter,其中成员变量score1和score2的值在0~100之间,否则抛出异常
package c7_1student; public class Student {// 定义一个类 private String id;// 设置成员变量 private String name; private String className; private int score1; private int score2; //getter和setter的写法 public String getId() { return id; } public String getName() { return name; } public String getClassName() { return className; } public int getScore1() { return score1; } public int getScore2() { return score2; } public void setId(String id) { this.id = id; } public void setName(String name) { this.name = name; } public void setClassName(String className) { this.className = className; } public void setScore1(int score1) throws Exception { if (score1 < 0 || score1 > 100) { throw new Exception("不在分数范围内"); } else { this.score1 = score1; } } public void setScore2(int score2) throws Exception { if (score2 < 0 || score2 > 100) { throw new Exception("不在分数范围内"); } else { this.score2 = score2; } } public int sumOfScore() {// 总分数 return score1 + score2; } public int maxOfScore() {//计算出最大值 int max; if (score1 > score2) { max = score1; } else { max = score2; } return max; } }
2.创建学生类对象,使用setter为对象设置值,显示对象的相关信息。
package c7_1student; public class TestStudent { public static void main(String[] args) { try { //有可能为异常代码 Student stu1 = new Student();// 创建对象 stu1.setId("202322048"); stu1.setName("张三"); stu1.setClassName("一年级"); stu1.setScore1(100); stu1.setScore2(90); System.out.println("学号为" + stu1.getId()); System.out.println("姓名为" + stu1.getName()); System.out.println("班级为" + stu1.getClassName()); System.out.println("第一科成绩" + stu1.getScore1()); System.out.println("第二科成绩" + stu1.getScore2()); System.out.println("成绩之和" + stu1.sumOfScore()); System.out.println("最大值" + stu1.maxOfScore()); System.out.println(); } catch (Exception e) { //如有异常则抛出异常 System.out.println(e.getMessage()); }
以上是用getter和setter方法的实例,希望大家不要搞混淆这两者的用法,以及它们的返回类型。
总结
到此这篇关于Java中Getter和Setter方法及主要区别的文章就介绍到这了,更多相关Java中Getter和Setter方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!