JAVA 面向对象 隐藏和封装

本页面更新日期: 2016年07月22日

前言

在前面程序中,经常出现通过某个对象直接访问其成员变量的情况.
这可能引起一些潜在问题,比如将某个 Person 的 age 成员变量直接设为 1000.
这在语法上没有任何问题, 但显然违背了当前的自然规律. 人怎么可能活到 1000岁 - - . (就现在的科学来讲)
Java也考虑到了这种情况, 为你提供了 类和对象的成员变量进行封装的方法,来保护成员变量不被恶意修改.

理解封装

封装(Encapsulation)是面向对象的三大特征之一.(另外两个是继承和多态, 以后会讲到)
它指的是将对象的状态信息隐藏在对应内部.
不允许外部程序直接访问对象内部信息.
而是通过该类所提供的方法来实现对内部信息的操作和访问.

封装是面向对象编程语言对客观世界的模拟
在客观世界里, 对象的状态信息都是被隐藏在对象内部.
外界无法直接操作和修改.
就如刚刚说的 Person 对象的 age 变量, 只能随着岁月的流逝, age 才会增加.
通常不能随意修改 Person 对象的 age.
对一个类或对象实现良好的封装, 可以实现以下目的.

  • 隐藏类的实现细节.
  • 让使用者只能通过事先预定的方法来访问数据, 从而可以在该方法里加入控制逻辑,限制对成员变量的不合理访问.
  • 可进行数据检查, 从而有利于保证对象信息的完整性.
  • 便于修改,提高代码的可维护性.

为了实现良好的封装, 需要从两个方面考虑.

  • 将对象的成员变量和实现细节隐藏起来, 不允许外部直接访问.
  • 把方法暴露出来, 让方法来控制对这些成员变量进行安全的访问和操作.

因此, 封装实际上有两个方面的含义:
把该隐藏的隐藏起来.
把该暴露的暴露出来.
这两个方面都需要通过使用 Java 提供的访问控制符来实现.

使用访问控制符

Java 提供了 3 个访问控制符.

  • private
  • protected
  • public

它们分别代表了 3 个 访问控制级别.
另外还有一个不加任何访问控制符的访问控制级别.
所以一共 4 个访问控制级别.
Java 的访问控制级别由小到大如下图所示:

这里写图片描述

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: Java是一种面向对象的编程语言,其中封装、继承和多态是面向对象编程的三个基本概念。 封装是指将数据和方法封装在一个类中,对外部隐藏实现细节,只提供公共接口,保证数据的安全性和可靠性。 继承是指在一个类的基础上创建一个新的类,新类继承了原类的属性和方法,并可以添加新的属性和方法,实现代码的复用和扩展。 多态是指同一种类型的对象,在不同的情况下表现出不同的行为,实现代码的灵活性和可扩展性。 这些概念是Java面向对象编程的核心,掌握它们可以帮助开发者更好地设计和实现Java程序。 ### 回答2: Java是一种面向对象编程语言,其核心概念包括封装、继承和多态。这些特性都是为了提高代码的可读性、可维护性和可重用性的。下面分别介绍一下这三个特性的作用。 1.封装 封装是指将数据和方法包含在一个类中,并限制对数据的访问,只能通过类提供的接口进行访问。这样可以保证数据的安全性和代码的清晰性。封装的优点是: (1)隐藏实现细节,用户只需要知道如何使用,而不需要知道其中的实现细节。 (2)提高代码的可维护性,更改类的实现方式不会影响到其他代码。 (3)保护数据的安全性,只有类内部才能访问数据,避免数据被误操作。 例如: public class Person{ private String name; private int age; public void setName(String name){ this.name = name; } public String getName(){ return name; } public void setAge(int age){ if(age < 0){ System.out.println("年龄不能为负数"); return; } this.age = age; } public int getAge(){ return age; } } 在上面的代码中,我们将Person类的数据(name和age)封装起来,只能通过类的公共方法进行访问。这样,类的用户就无法直接访问类的私有数据,从而保证了数据的安全性。 2.继承 继承是指一个类从另一个类中继承所有的属性和方法。这样能够避免代码的重复,提高代码的复用性和可维护性。继承的优点是: (1)避免代码的重复,提高代码的复用性。 (2)提高代码的可维护性,更改父类的实现方式不会影响到子类。 (3)提高代码的可读性,使用继承可以提高代码的可读性。 例如: public class Student extends Person{ private String school; public void setSchool(String school){ this.school = school; } public String getSchool(){ return school; } } 在上面的代码中,我们定义了一个Student类,使用关键字extends继承自Person类。此时,Student类就拥有了Person类的所有属性和方法,我们只需要在Student类中添加一些新的属性和方法就可以了。 3.多态 多态是指同一个对象在不同状态下有不同的行为表现。多态可以通过继承和接口实现。多态的优点是: (1)提高代码的灵活性。 (2)提高代码的可扩展性,能够很容易地增加新的子类。 例如: public class School{ public void introduce(){ System.out.println("我是一所学校"); } } public class Kindergarten extends School{ public void introduce(){ System.out.println("我是一所幼儿园"); } } public class MiddleSchool extends School{ public void introduce(){ System.out.println("我是一所初中"); } } 在上面的代码中,我们定义了一个School类和两个子类,分别是Kindergarten和MiddleSchool类。这两个子类都重写了父类的introduce方法,有不同的行为表现。我们可以通过形参传递不同的子类对象,调用同样的方法,实现不同的行为表现。这就是多态的体现。 ### 回答3: Java作为一门面向对象的编程语言,其三个重要概念封装、继承和多态是Java编程基础。 封装:在Java中,封装是将类的实现细节隐藏起来,由方法代替属性直接进行访问,从而保证数据安全性、可维护性和可扩展性。通过私有化变量并提供公共的get和set方法,实现了对属性的严格控制和限制。封装还可以提高类的内聚性,减少类与类之间的直接依赖,让代码更加灵活、易于维护、扩展和重构。 继承:继承是Java面向对象的重要概念之一,通过继承可以实现代码的复用、扩展和重构。子类可以继承父类的属性和方法,并可以对其进行修改或扩展,从而减少了代码的冗余,提高了代码的可复用性和可维护性。在Java中,继承关系只能是单继承,即一个类只能继承一个直接父类。 多态:多态是Java面向对象编程的另一种特性,它可以提高代码的可扩展性和灵活性。多态特性通过父类和子类之间的关系,允许同一个变量或方法在不同情况下表现不同的行为,实现对同一个对象的多种表现形式。多态分为静态多态和动态多态,静态多态是指方法重载,动态多态是指方法重写,其中动态多态是Java面向对象编程的一种核心概念。 综上所述,Java面向对象封装、继承和多态是一些基础概念,它们对于Java编程师来说是非常重要的,能够帮助编程师构建出具有良好可维护性、可扩展性、可读性的代码。掌握好这些基础概念可以让编程师更好地进行Java开发工作,可以提高代码的质量,降低开发过程中出现问题的风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值