为什么说继承破坏了封装
//继承破坏了封装性 因为修饰符的不同
封装:通过公有化方法访问私有化属性,使得数据不容易被任意窜改,常用private修饰属性;
继承:通过子类继承父类从而获得父类的属性和方法,正常情况下,用protected修饰属性,专门用于给子类继承的,权限一般在本包下和子类里;
继承破坏了封装:是因为属性的访问修饰符被修改,使得属性在本包和子类里可以任意修改属性的数据,数据的安全性从而得不到保障。
相关推荐
- (转)面向对象5大基本特征 以前一直认为程序中的类有使用到封装继承多态就是面向对象设计,其实不然 封装,继承,多态只是面向对象的三大特性,但是在设计程序的时候并不是说类的结构使用到了(或是体现出了)这三个特性就是面向对象, 其实真正的面向对象设计是要符合下面的五大原则, 面向对象的五大基本原则单一职责原则(SRP)开放封闭原则(OCP) 里氏替换原则(LSP) 依赖倒置原则(DIP) 接口隔离原则(ISP) 单一职责原则(SRP) 开放封闭原则(OCP) 里氏替换原则(DIP) 依赖倒置原则(DIP) ISP 接口隔离原则
- java里面老是说继承破坏封装,如何理解
- java技术面试之面试题大全 Java 面试知识点总结 Java 方向如何准备 BAT 技术面试答案 (汇总版) 1.面向对象和面向过程的区别 2.Java的四个基本特性(抽象、封装、继承,多态) 3.重载和重写的区别 4.构造器Constructor是否可被override 5.访问控制符public,protected,private,以及默认的区别 7.String和StringBuffer、StringBuilder的区别 8.hashCode和equals方法的关系 9.抽象类和接口的区别 10.自动装箱与拆箱 11.什么是泛型、为什么要使用以及泛型擦除 12.Java中的集合类及关系图 13.HashMap实现原理 14.HashTable实现原理 15.HashMap和HashTable区别 16.ArrayList和vector区别 17.ArrayList和LinkedList区别及使用场景 18.Collection和Collections的区别 19.Concurrentha
- 为什么说继承破坏了封装
- Java面试题技术类 1、面向对象编程的三大特性是什么? 2、String 和StringBuffer的区别 3、说出ArrayList,Vector, LinkedList的存储性能和特性 4、Collection 和 Collections的区别 5、HashMap和Hashtable的区别 6、final, finally, finalize的区别 7、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? 8、error和exception有什么区别? 9、abstract class和interface有什么区别? 10、List, Set, Map是否继承自Collection接口 11、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? 12、char型变量中能不能存贮一个中文汉字?为什么? 13、多线程有几种实现方法,都是什么?哪一种方式比较优秀?同步有几种实现方法,都是什么? 14、java中有几种类型
- 项目总结——谈谈封装(抽象工厂+反射+缓存机制) 一、首先说一下什么是缓存文件? 二、为什么要使用缓存? 三、如何使用缓存? 四、说用在哪? 五、这里又为什么不用单例模式。 六、总结:
- 面向对象五大基本原则 以前一直认为程序中的类有使用到封装继承多态就是面向对象设计,其实不然 封装,继承,多态只是面向对象的三大特性,但是在设计程序的时候并不是说类的结构使用到了(或是体现出了)这三个特性就是面向对象, 其实真正的面向对象设计是要符合下面的五大原则, 面向对象的五大基本原则单一职责原则(SRP)开放封闭原则(OCP) 里氏替换原则(LSP) 依赖倒置原则(DIP) 接口隔离原则(ISP) 单一职责原则(SRP) 开放封闭原则(OCP) 里氏替换原则(LSP) 依赖倒置原则(DIP) ISP 接口隔离原则
- Java基础知识 1、面向对象和面向过程的区别 2、Java语言有哪些特点 3、JDK、JRE和JVM 4、什么是字节码,采用字节码的最大好处是什么 5、Java和C++的区别 6、Java的8种基本类型 7、重载和重写的区别 8、Java面向对象编程三大特性: 封装、继承、多态 9、 String 和 StringBuffer、StringBuilder 的区别是什么 String 为什么是不可变的 10、在Java中定义一个不做事且没有参数的构造方法的作用 11、接口和抽象类的区别 12、成员变量与局部变量的区别有哪些 13、对象的相等与指向他们的引用相等,两者有什么不同? 14、== 与 equals (重要) 15、hashCode与equals(重要) 16、为什么Java中只有值传递 17、 简述线程,程序、进程的基本概念。以及他们之间关系是什么 18、线程有哪些基本状态?这些状态是如何定义的? 19、关于 final 关键字的一些总结 20、Java 中的异常处理
- python之面相对象程序设计 一 面向对象的程序设计的由来 二 什么是面向对象的程序设计及为什么要有它 三 类与对象 四 属性查找 五 绑定到对象的方法的特殊之处 六 对象之间的交互 七 练习 八 继承与派生 九 多态与多态性 十 封装 十一 绑定方法与非绑定方法 十二 小白容易犯的错误 十三 python中关于OOP的常用术语 十四 面向对象的软件开发 十五 面向对象实战
- 面向对象五大设计原则 以前一直认为程序中的类有使用到封装继承多态就是面向对象设计,其实不然 封装,继承,多态只是面向对象的三大特性,但是在设计程序的时候并不是说类的结构使用到了(或是体现出了)这三个特性就是面向对象, 其实真正的面向对象设计是要符合下面的五大原则, 面向对象的五大基本原则单一职责原则(SRP)开放封闭原则(OCP) 里氏替换原则(LSP) 依赖倒置原则(DIP) 接口隔离原则(ISP) 单一职责原则(SRP) 开放封闭原则(OCP) 里氏替换原则(LSP) 依赖倒置原则(DIP) ISP 接口隔离原则
- 字符串比较——compareTo函数
- wolf