Java的封装

本文深入解析Java编程语言中封装的概念及其实现方式,通过Car类示例演示如何将变量声明为私有并提供公共的setter和getter方法,确保数据的安全性和控制权。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此教程演示了Java编程语言中封装的用法

什么是封装

封装就是将变量和方法包装在一个单元中。封装也称为数据隐藏。为什么?因为,当您设计类时,您可以使变量对其他类隐藏,只提供处理数据的方法。您的类应该设计成黑匣子。您可以从外部(类)访问多个方法,并且可以访问每个方法的返回值类型。您需要了解的有关此类的所有信息是方法的名称和返回值类型。换句话说,你给类一些数据,并得到新的数据作为响应,而无需关心用于数据处理的内部机制。

封装是面向对象编程(OOP)背后的四个主要概念之一。OOP问题在求职面试中很常见,因此您可能会在下次Java求职面试中遇到有关封装的问题。

要实现Java封装:

  • 将一个类的变量声明为私有。
  • 提供公共的setter和getter方法来修改和查看变量值。

Java封装示例

Java封装示例

图1. Java封装示例

下面通过示例演示Java中的封装。该Car类有两个变量,nametopSpeed。两者都声明为私有,这意味着它们不能在类外部直接访问。getter和setter方法:getNamesetNamesetTopSpeed等被宣布公开。这些方法向“外部人员”公开,可用于更改和检索Car对象中的数据。注意,我们有一个方法来设置车辆的最高速度和两个方法来获取最高速度值,无论是在MPH或公里/小时。这就是封装的作用——它隐藏了数据并为我们提供了所需的值

package com.lintao.encapsulation;
public class Car {
	
	private String name;
	private double topSpeed;
	
	public Car() {}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public void setTopSpeed(double speedMPH) {
		topSpeed = speedMPH;
	}
	
	public double getTopSpeedMPH() {
		return topSpeed;
	}
	
	public double getTopSpeedKMH() {
		return topSpeed * 1.609344;
	}
}

主程序创建一个具有给定名称的 Car 对象,并使用 setter 方法存储此实例的最高速度。现在,我们可以轻松获得MPH或KMH中的速度,而无需关心在_Car_类中如何转换速度。

package com.lintao.encapsulation;
public class EncapsulationExample {
	public static void main(String[] args) {
		Car car = new Car();
		car.setName("Porsche Cayenne 4.8-litre V8");
		car.setTopSpeed(173.0d);
		System.out.println(car.getName() + " top speed in MPH is " + car.getTopSpeedMPH());
		System.out.println(car.getName() + " top speed in KMH is " + car.getTopSpeedKMH());
	}
}

这是示例的输出

Porsche Cayenne 4.8-litre V8 top speed in MPH is 173.0
Porsche Cayenne 4.8-litre V8 top speed in KMH is 278.416512

让我们总结一下封装的好处:

  • 可以将类的变量设置为只读或只写。
  • 一个类可以完全控制其变量中存储的内容。
  • 类的用户不知道该类如何存储其数据。保证了数据的安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值