Java的封装和继承
封装就是把属性都隐藏,为了安全性。比如,你口袋里有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是一门非常成熟的工程语言。我非常赞成。
这一套的概念学习下来,你会觉得它是完整的,闭环的,有体系的,能够经得起时间考验的,也就是说,能够长期的存活下来的。
- 点赞
- 收藏
- 关注作者
评论(0)