首页 > TAG信息列表 > Encapsulation

什么是封装

封装(encapsulation,有时称为数据隐藏)是处理对象的一个重要概念。 从形式上看:封装是将数据和行为组合在一个包中,并对对象的使用者隐藏具体的实现方式。 实现封装的关键在于,绝对不能让类中的方法直接访问其他类的实例字段。程序只能通过对象的方法与对象数据进行交互。

韩顺平Java09(封装、继承、多态)

封装(encapsulation)      好处: 隐藏实现细节 可以对数据进行验证,保证安全且合理 实现步骤:  

在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。

封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。 要访问该类的代码和数据,必须通过严格的接口控制。 封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。 适当的封装可以让程式码更容易理解与维护,也加强了程式码

Encapsulation_OOexample-5

package dataEncapsulation; public class CatMain { public static void main(String[] args) { CatNew cat1 = new CatNew("Catty", "red", 4); // System.out.println(cat1.name); String colour = cat1.getCoulur(); System.out.println(

封装(encapsulation)

封装(encapsulation) 提高代码的安全性。 提高代码的复用性。 “高内聚”:封装细节,便于修改内部代码,提高可维护性。 “低耦合”:简化外部使用,便于调用者使用,便于扩展和协作。 访问控制符 封装的实现—使用访问控制符 private表示私有,只有自己的类才能访问。 defult(如同没有修

何时重构?

因此,我写了我的第一个Python应用程序,其大小不但很小,而且我按程序进行了操作,因为这是迄今为止我最能吸收的信息.我现在想对其进行重构,以尝试并(最终)理解类和OOP.我的问题是有关从一个简单的开始就设计课程的最佳实践. 假设我有一个应用程序可以模拟空头认沽期权的投资组合.这

java-封装在链表中的工作方式

说我有两个类ListNode和List. public class List{ private ListNode head; public List(){head = null;} public void insertFront (int obj) { head = new ListNode(obj, head); } // other methods to be declared public boolean isEmpty(

java-我可以在相同类的对象之间封装成员吗?

私有访问仅允许同一类的对象访问它.但是,是否有任何方法可以限制类成员,使得只有所有者对象(而不论类如何)都不能访问它? 作为对现实世界对象的类比,您的臀部是您自己的私人财产,未经您的允许,没有其他人可以仅仅因为他/她是同伴而进入您的臀部.有没有一种方法可以在代码中实现呢? 注

java-类内的吸气剂模式?

我在一个类中有一个字段,只能直接从getter访问.举个例子… public class CustomerHelper { private final Integer customerId; private String customerName_ = null; public CustomerHelper(Integer customerId) { this.customerId = customerId; } public Stri

就Java中正确使用封装提出了建议

我正在创建一个益智游戏,就像一个爱好项目一样,但是该项目现在已经达到了很多代码(约1500行)的地步.尽管我试图防止这种情况发生,但是代码却变得混乱了.我绝对想清理代码,并在仍然可以的情况下使其更易于维护和可读. 我的游戏中有3个类处理有关拼图的动作: class PieceController{

javascript-如何从Rails资产管道中的其他文件调用JS函数

这可能是比Rails资产管道更常见的JS封装问题. 在资产管道中,我有一些通用的JS文件,这些文件随处可见: app / assets / javascripts / pickers.js.cofeee jQuery -> $('.datetimepicker').datetimepicker dateFormat: 'yy-mm-dd', timeFormat: 'h:mmtt', ampm: true,

java-内部类会使封装的概念无效吗?

使用private访问修饰符,以便我们只能在类中使用相应的成员.但是,使用内部类,我们可以定义一种方法来访问外部类的私有成员.这是该代码: import java.util.*; import java.lang.*; import java.io.*; class Outer { private int x = 1; Inner getInner() { Inner

c-如何返回const std :: vector?

我有一个包含容器(包含指针)的类作为成员: MyClass{ private: std::vector<MyObject*> _VecMyObjs; public: const std::vector<MyObject* const> GetVecMyObj(); } 现在,我尝试实现GetVecMyObj().这是我想出的… const vector<MyObject *const> ACI_CALL MyClass::GetVecM

c-运算符重载中的类数据封装(私有数据)

下面是代码 编码: #include <iostream> using namespace std; class Rational { int num; // numerator int den; // denominator friend istream& operator>> (istream & , Rational&); friend ostream& operator<< (ostream &

修改类以封装而不是继承

我处理过的代码库具有从MDB2继承的databse类.这形成了所用MVC框架(自定义构建的事务)的基础,而模型又从db继承. 如我所知,其中有些人已经注意到了,这会导致一个很大的问题.每次实例化模型时,结果都是创建一个新的数据库连接.这显然是很浪费的.这也意味着我无法按预期使用事务,因为

封装在JavaScript中,它是否存在?

我有使用C#编程语言的经验,但我现在也必须使用JS,这对我来说相当新. 我试图在JS中开发一个简单的类仿真,如下所示: http://jsfiddle.net/T74Zm/ function A( inputValue ) { this.Init( inputValue ); this.Print(); } A.prototype = { value: null, Init: functio

java – 我可以在setter方法中编写验证逻辑吗?

setter方法是否仅用于设置属性的值,因为它作为参数传递?在将值赋给属性之前,我们可以编写一些验证逻辑吗?解决方法:是的,验证逻辑绝对可以接受. 应该注意的是,如果您有广泛的验证,您可能希望将其提取到特定的验证器服务.但是对于简单的验证,您可以安全地执行此操作. 使用getter& amp;

java – 什么是封装?

参见英文答案 > Difference between abstraction and encapsulation?                                    39个 我有两个封装定义,不能适合一个定义. >封装是数据隐藏.通过使用private,protected和public,将数据打包到单个组件中.>无论是什么

为什么PHP不允许私有const?

我有一个类在其内部实现中使用常量,但我想限制这些常量的可见性.为什么PHP不允许私有常量?有没有另一种方法来实现这一点,或者PHP试图阻止某些类型的设计失误我不知道?解决方法:使用私有静态属性. 在这种情况下,您将在所有对象中具有相同的变量,并且如果要将其范围扩展为嵌套,则可以

Java封装

参见英文答案 > Why use getters and setters/accessors? [closed]                                    38个 我们总是说如果我们只是将变量私有定义并定义getter setters来访问这些变量,那么数据将被封装.我的问题是,如果我们可以通过getter

c – 私有,公共和受保护继承之间的区别

C中的public,private和protected继承有什么区别?我在SO上发现的所有问题都涉及具体案例.解决方法:要回答这个问题,我想先用自己的话来描述成员的访问者.如果您已经知道这一点,请跳至标题“next:”. 我知道有三种访问者:公共,受保护和私有. 让: class Base { public: int p

java – 私有类变量与过度参数传递

我目前正在开发一个使用大量共享UI对象(如Button等)的单个活动Android应用程序.目前,我将这些UI对象声明为私有非静态类变量.替代方法是不断地将对象从方法传递给方法并以这种方式修改它们.目前我不清楚哪个选项应该是首选,因为在我看来,使用最大封装形式会让我做一些相关的参数传

c – 封装概念在这里被侵犯了吗?

#include<iostream> class A { public: int a; protected: void func() { std::cout<<"protected member"<<endl; } }; class B:public A { public: using A::func; //Isn't this violation of encapsulation? }; int main(){

c – 是否可以组合对称代码片段?

我正在为我的学校项目实现avl树,并发现自己在对称情况下编写了两次相同的代码.例如,此函数执行两个节点的旋转以平衡树. If子句处理下级节点是较高节点的左子节点的情况,而else子句处理相反的情况: void avl<T>::rotate(node<T> *x, node<T> *y) { if (x == y->l) { x->p =

在创建将在多个级别频繁引用的java对象时,使用类实例或使类静态更好吗?

我正在写一个java游戏,我需要一个单元原型的主数据库.数据库只是一个包含HashMap的类,它存储了几十个包含单个单元类型统计信息的类实例.当游戏产生一个新单元时,它会将该单元复制出数据库,使用单元的名称在HashMap中找到它.当程序启动时,此数据库将构建一次,并且不会更改.我也没有