Java 封装

今天来回忆一下Java的封装。
在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据,必须通过严格的接口控制。
封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
有一句话来盖过:封装将类的某些信息隐藏在类内部,不允许外部程序直接访问,只能通过该类提供的方法 来实现对隐藏信息的操作和访问。
封装的优点

  1. 良好的封装能够减少耦合。
  2. 类内部的结构可以自由修改。
  3. 可以对成员变量进行更精确的控制。
  4. 隐藏信息,实现细节。
    封装的特点:
    只能通过规定的方法访问数据。
    隐藏类的实例细节,方便修改和实现。
    实现封装的具体步骤如下:
    修改属性的可见性来限制对属性的访问,一般设为 private。
    为每个属性创建一对赋值(setter)方法和取值(getter)方法,一般设为 public, 用于属性的读写。
    在赋值和取值方法中,加入属性控制语句(对属性值的合法性进行判断)。
    实例:
    假设学生类为 Employee,示例如下:
public class Employee {
		private String name;//姓名
		private int age;//年龄
		private String phone;//联系电话
		private String address;//家庭住址
		private String xiehao;//学号
		private String ban;//班别
		public String getName() {return name;		}
		public void setName(String name) {this.name = name;
		public int getAge() {return age;		}
		public void setAge(int age) {//对年龄进行限制
			if (age<16 || age>20) {this.age = age; }else{this.age=16;//默认年龄}
		}
		public String getPhone() {return phone;	}
		public void setPhone(String phone) {this.phone = phone;		}
		public String getAddress() {return address; }
		public void setAddress(String address) {this.address = address;}
		public String getBan() {return ban; }
		public void setBan(String ban) {this.ban = ban; }
		public String getXiehao() {return xiehao; }
		public void setXiehao(String xiehao) {this.xiehao = xiehao; }
		@Override
		public String toString() {
			return "Employee [name=" + name +", age=" + age 
			+ ",ban="+ban+",xiehao="+xiehao+", phone=" + phone
			+ ", address=" + address + "]";
			 }
}

编写测试类 EmployeeTest,在该类的 main() 方法中调用 Employee 属性的 setXxx() 方法对其 相应的属性进行赋值,并调用 getXxx() 方法访问属性,代码如下:

public class EmployeeTest {
	public static void main(String[] args) {
		Employee people=new Employee();
		people.setName("张三");
		people.setAge(16);
		people.setPhone("0123456789");
		people.setAddress("广东省广州市");
		people.setBan("xx班");
		people.setXiehao("X200010110");
		System.out.println("姓名:"+people.getName());
		System.out.println("年龄:"+people.getAge());
		System.out.println("电话:"+people.getPhone());
		System.out.println("家庭住址:"+people.getAddress());
		System.out.println("班别:"+people.getBan());
		System.out.println("学号:"+people.getXiehao());
		System.out.println(people.toString());	
		}
}

代码结果:
在这里插入图片描述

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。
Java中的封装是一种面向对象编程的重要概念,用于隐藏类的内部细节,并提供公共接口以便其他类可以使用。封装可以保证数据的安全性和一致性,并且可以使代码更易于维护。 Java中的封装通常通过访问修饰符来实现,其中public、protected、private是三个最常用的访问修饰符。public表示该成员可以被任何类访问,protected表示该成员可以被同一个包中的类和继承该类的子类访问,private表示该成员只能被该类的方法访问。 封装的主要思路是将类的数据成员设置为私有,然后通过公共的方法提供访问这些私有成员的接口。这些公共方法通常被称为getter和setter方法,其中getter方法用于获取类的私有成员变量的值,setter方法用于修改类的私有成员变量的值。 以下是一个简单的Java类的封装示例: ``` public class Person { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { if (age >= 0 && age <= 120) { this.age = age; } else { System.out.println("Invalid age!"); } } } ``` 在上面的代码中,name和age被设置为私有成员变量,只能通过公共的getter和setter方法进行访问。setName和setAge方法包含一些条件判断,以确保输入的值是有效的。这种封装可以防止类的数据被错误地修改,并提供了更好的代码可读性和可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值