getter与setter方法

目录

Getter和Setter方法的定义

创建一个简单的类

创建Getter方法

创建Setter方法

getter与setter中代码处理

使用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方法的命名应该以getset开头,后接属性名(首字母大写),要进行异常判断。

2.方法参数:Getter方法通常没有参数,而Setter方法应该有一个参数,用于接收要设置的值。

3.方法返回类型:Getter方法应该返回属性的类型,而Setter方法通常没有返回值。

4.异常处理:如果Setter方法可能会抛出异常(例如,在尝试将非法值设置给属性时),那么应该使用try-catch块来捕获并处理这些异常。

5.访问修饰符:Getter和Setter方法的访问修饰符应该与对应的属性保持一致。如果属性是私有的(private),那么Getter和Setter方法也应该设置为私有访问修饰符(private)。

  • 35
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值