当前位置: 首页 > 面试题库 >

如何在继承中实现封装

纪畅
2023-03-14
问题内容

我有两个班TestEncap。我有一个私有变量a,可以通过setter和getter方法访问。我就是继承类TestEncap

现在我可以更改ausing 的值setValue(int a)。我想限制该选项。我希望它使其成为只读值。请协助我。

class Test
{
    private int a;
    protected void setValue(int a)
    {
        this.a = a;
    }
    protected void getValue()
    {
        System.out.println("The assigned value of a is : "+this.a);
    }
}
public class Encap extends Test {
    public static void main(String [] args)
    {
        Test t = new Test();
        t.setValue(4);
        t.getValue();
        Encap e = new Encap();
        e.setValue(3);
        e.getValue();      
    }
}

问题答案:

一种选择是从类中 删除 方法:setValue()``Test

class Test
{
    private int a;

    protected void getValue()
    {
        System.out.println("The assigned value of a is : "+this.a);
    }
}

编辑: 为什么要这样做?
如果Encap从继承Test,它应该能够执行与相同的动作Test。否则,继承的目的是什么?如果您仍然认为Test应该能够修改值而Encap不能修改值,那么您的设计可能是错误的。您可以尝试这样的方法:

              BaseClass
              ---------
              +getValue
                /   \
               /     \
           Test       Encap
         --------   ---------
        +setValue


 类似资料:
  • 问题内容: 如何继承/扩展使用“显示原型”模式的类?有没有办法制作变量和函数? 基础对象示例: 问题答案: JavaScript中没有受保护的变量/属性。但是,当您在同一范围内声明继承类时,可以重用“私有”变量,当私有变量只是原型的“隐藏实用程序”时,这似乎是可能的。 这是JavaScript的继承方式,这意味着American的原型从Person的原型自动继承了clone(),toJSON()和

  • 我有一个类型<code>build</code>有一个标志模板,根据活动标志位,它从这些类型继承。这使我可以从具有大量配置的许多子类中“构建”类: 所以< code >构建 但它不编译,说<code>空</code>已经是一个直接基类: 我怎样才能做到这一点,而不必创建4个不同的空结构来避免冲突呢?

  • 子类也必须遵守第一条和第二条规则。它从超类 Cat 继承了标识属性。例如: package eg; public class DomesticCat extends Cat { private String name; public String getName() { return name; }

  • 本文向大家介绍举例说明js如何实现继承?相关面试题,主要包含被问及举例说明js如何实现继承?时的应答技巧和注意事项,需要的朋友参考一下 JavaScript 基于原型链实现的继承,简单来说就是通过对象的实现的向上查找。 比如你从未定义过方法,但是你却可以在任何地方使用它,原因就是当你使用时,他会先在自身查找看看没有这个方法,如果没有就根据寻找他的原型对象,看看他的原型对象上有没有....知道找到为

  • 本文向大家介绍Python实现类继承实例,包括了Python实现类继承实例的使用技巧和注意事项,需要的朋友参考一下 Python是一种解释型、面向对象、动态数据类型的高级程序设计语言,本文就举一例Python类继承的实例。 实例代码如下: 运行结果:

  • 本文向大家介绍聊聊JavaScript如何实现继承及特点,包括了聊聊JavaScript如何实现继承及特点的使用技巧和注意事项,需要的朋友参考一下 “继承”是面向对象编程里面经常提及到的概念,它的目的是实现代码复用。JavaScript并没有“类”的概念,那么,它如何实现继承呢? (ES6有关键字class和extend,继承的语法与Java等面向对象语言类似,但是,ES6 class,只是Jav