对封装、继承、多态、抽象的理解

时间:2022-09-05 21:54:14

封装

封装是面向对象的重要原则,就是把对象的属性和行为(方法)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。大白话讲就是,把不想告诉或者不该告诉别人的东西隐藏起来(private关键字修饰),把可以告诉别人的东西公开,别人只能用我提供的功能实现需求,而不知道内部是如何实现的。正是由于这种特性,所以起到了增加安全性的作用。

继承

继承是面向对象最显著的一个特性,是从已有的类中派生出新的类,我们把它称之为子类,子类继承父类的属性和行为,并能根据自己的需求扩展出新的属性和行为,提高了代码的可复用性
eg : 运动Sport,球类运动BallSport继承Sport,羽毛球Badminton继承BallSport。

多态

多态指允许不同的对象对同一个消息做出相应,即同一个消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用)。封装和继承几乎都是为多态而准备的,在执行期间判断引用对象的实际类型从而调用其相应的方法。
eg : 球类运动都会有play()打球这个行为(方法),但是这个方法是抽象的(没有具体的实现),子类中的羽毛球实现是用羽毛球拍去打的,而足球是用脚去踢的,篮球是用手去投的。

抽象

抽象表示对问题领域进行分析、设计中得出的抽象的概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。在Java中抽象用 abstract 关键字来修饰,用 abstract 修饰类时,此类就不能被实例化,从这里可以看出,抽象类(接口)就是为了继承而存在的。
eg : 还是多态中的例子,球类运动作为父类定义一个抽象方法play(),然后让继承它的子类具体实现该方法。