抽象、继承、封装、面试的理解
可以跳过
1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。
2.继承:
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
3.封装:
封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
4. 多态性:
多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
我个人觉得这4个词,很多的视频教学用,用的最多的大部分都是人,动物,造汽车,英雄联盟建英雄。
大家可以挑一个自己感兴趣并且自己好理解的方式作为一个例子去理解,
我这边就用英雄联盟举个例子
抽象
比如每个英雄都有血量,有名字,有攻击力,有防御力,有普通攻击方法,有技能,有装备。
这些大家都共有的属性和方法都可以抽取出来的这个动作或叫过程,称之为抽象。
继承
继承就是抽象的下面一步了,当抽象出来一个基础的英雄的类后,我们可以继续分类,比如有物理英雄和魔法英雄
物理英雄最基础的需要的就是英雄的一些基础参数和方法,那么直接用extends关键字就好了。
这样就不用再创建物理英雄的时候,再去写血量,名字等属性了。直接用父类的就OK。
封装
就是属性private私有化,提供公有的方法get,set访问私有属性
为什么要封装,其本身的原因也是因为使用的地方太过频繁,比如某个属性和方法需要一直调用切基本都差不多,那么就单独将某些属性和方法封装起来,提供出来一个类方便调用
多态
Java 实现多态有 3 个必要条件:继承、重写和向上转型。
继承:物理英雄需要继承英雄
重写:物理英雄对普通攻击的方法进行重写,变成物理攻击
向上转型:物理英雄既能使用普通攻击,也能使用物理攻击