首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果类型抽象的表示部分声明为私有,那么子类如何违反封装?

如果类型抽象的表示部分声明为私有,那么子类如何违反封装?
EN

Software Engineering用户
提问于 2015-06-16 07:02:17
回答 1查看 120关注 0票数 1

这里,我了解到子类违反了封装:

它违反了封装,因为超类和子类的实现变得紧密耦合。

例如,如果我们考虑下面的Java语法,class可以访问它的超类的所有字段和方法,只要它们没有声明为private

代码语言:javascript
复制
class Person{
    private String name;
    String address;
    //methods of class Person
}

class Employee extends Person{
    float salary;
    private Employee immedateManager;
    private raiseSalary(float raise){...}
}

class Manager extends Employee{
    String department;

    void test(){
        name = "Fred";   //compiler error, could not break encapsulation
        salary = 70000.00f;
        address = "somewhere";
        immediateManager = "Slate"; //compiler error, could not break encapsulation
        raiseSalary(1234.0);    //compiler error, could not break encapsulation
    }
}

那么,如果类型抽象的表示部分(Java class)声明为private,那么在说子类违反封装之前,人们是如何理解的呢?

EN

回答 1

Software Engineering用户

发布于 2015-06-16 13:12:51

这与隐私无关。类的一个组成部分不再在类中实现。从定义上说,这是封装的丢失。

然而,面向对象的程序员有时非常重视类级封装.继承的其他问题(如耦合)更为重要,在其他适当继承的情况下,封装丢失不应困扰您。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/286908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档