Java的封装和继承
【摘要】 封装就是把属性都隐藏,为了安全性。比如,你口袋里有100块钱,看做你的属性,别人如果可以直接把钱就拿走,就不安全。高内聚,就是类的内部数据操作细节由自己完成,不允许外部干涉;低耦合:仅暴露方法给外部使用。这样说来,属性都要隐藏,也就是要用private来修饰。那么,继承的时候,这些属性都无法继承了。所以,封装的理念,和继承的理念,是有矛盾的。这么说对吗?显然是不对的,那么哪里不对呢?关于继承...
封装就是把属性都隐藏,为了安全性。比如,你口袋里有100块钱,看做你的属性,别人如果可以直接把钱就拿走,就不安全。
高内聚,就是类的内部数据操作细节由自己完成,不允许外部干涉;低耦合:仅暴露方法给外部使用。
这样说来,属性都要隐藏,也就是要用private来修饰。那么,继承的时候,这些属性都无法继承了。
所以,封装的理念,和继承的理念,是有矛盾的。
这么说对吗?显然是不对的,那么哪里不对呢?关于继承的说法不对。
继承,不管好的坏的,公开的隐藏的,都会全盘继承下来,只是说,有些属性在父类定义为private后,
即使是子类,也无法看到和直接访问。并不是说子类没有继承下来,而是说不能直接查看和使用而已。
而是要通过封装后暴露的方法来访问。所以,封装、和继承是可以配合,是不完全矛盾的。
继承的重点,在于减少冗余的属性和方法的定义。而在继承的基础之上,会衍生出一个大的概念系统:抽象、重写、运行时多态等等。
比如,当定义了一个Animal类时:
package com.exam;
public class Animal
{
private String name;
Animal(){
name="Animal";
}
public String getName(){
return name;
}
public void say(){
System.out.println("Animal# my name is "+name);
}
}
而一个继承类,虽然继承了Animal类,但是想直接访问它的private修饰的属性,那是不行的,编译时就会报错。
而在继承的基础上,又会出现方法重写。出现抽象类。
另外,为了解决加java里面只有单继承的问题,又出现了接口。
从继承这个基本的概念,延伸出了非常多的扩展的概念,而这些扩展的概念都是有非常重要的实战意义。
有人说java是一门非常成熟的工程语言。我非常赞成。
这一套的概念学习下来,你会觉得它是完整的,闭环的,有体系的,能够经得起时间考验的,也就是说,能够长期的存活下来的。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)