Java面向对象——封装以及this关键字

封 装

封装是面向对象编程(OOP)的三大特性之一,它将数据和操作数据的方法组合在一个单元内部,并对外部隐藏其具体实现细节。在Java中,封装是通过类的访问控制修饰符(如 private、protected、public)和访问方法(getter 和 setter)来实现的。
在这里插入图片描述

访问控制修饰符

在Java中,类的成员可以使用不同的访问控制修饰符来控制其可见性。

private:只有同一个类内部的方法可以访问。

default(包级访问):同一个包内的类可以访问。

protected:同一个包内的类以及不同包中的子类可以访问。

public:任何类都可以访问。

Getter 和 Setter 方法

这些方法用于在类外部访问和修改类的私有属性。Getter 方法用于获取属性的值,Setter 方法用于设置属性的值。它们通常是公有方法,允许外部代码通过方法来访问属性,而不需要直接访问属性本身。

封装的优点

  • 数据隐藏: 封装隐藏了类的内部实现细节,防止外部代码直接访问和修改数据,从而提高了数据的安全性。

  • 代码灵活性: 封装使得类的内部结构可以更改,而不影响外部代码的使用。

  • 代码重用: 封装提供了接口来访问类的功能,使得其他代码可以重用类的功能而不需要了解内部实现细节。

封装的实现:

封装通过将类的成员声明为私有(private)来实现,然后通过公有(public)的 Getter 和 Setter 方法来提供对这些成员的访问和修改。

封装的应用场景:

封装在软件设计中的应用广泛,尤其适用于隐藏内部细节、提供良好的接口、确保数据安全性等场景。它有助于构建模块化、易于维护的代码。

不变性: 封装可以用于创建不变类(Immutable Class),即类的实例一旦创建就不能被修改,只能通过构造函数来初始化。

遮蔽(Shadowing)

是指一个作用域中使用了一个和外层作用域相同的变量名,导致局部变量“遮蔽”了外部变量,即无法直接访问外部变量

局部变量遮蔽成员变量

this关键字

this关键字更详细讲解点击这里
代表当前对象可以用于以下几个方面:

  1. 引用当前对象的成员方法

  2. 引用当前对象的成员变量

  3. 调用当前对象的构造方法

this只能在类的实例方法、实例初始化和构造方法中使用。不能在静态方法中使用。

总结

  1. 引用当前对象:

在类的非静态方法中,this 引用当前对象,即调用该方法的对象实例。

  1. 访问实例变量:

在类的方法中,可以使用 this 来访问当前对象的实例变量。

  1. 调用构造方法:

在一个构造方法内部,可以使用 this() 调用当前类的其他构造方法,实现代码的复用。

  1. 避免方法参数与实例变量同名:

当方法的参数名与实例变量同名时,可以使用 this 关键字来区分引用的是实例变量还是方法参数。

  1. 在构造方法中调用其他构造方法:

使用 this() 在构造方法中调用其他构造方法,以减少代码冗余。

  1. 在匿名内部类中:

在匿名内部类中,如果需要引用外部类的实例,可以使用 外部类名.this。

  1. 在静态方法中的限制:

this 不能在静态方法中使用,因为静态方法与特定对象实例无关。

  1. 构造方法中的 this 和 super 的关系:

构造方法中的 this() 和 super() 不能同时使用,因为它们都必须作为构造方法的第一行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-今非昔比°

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值