面向对象编程(三)抽象.docx

面向对象编程(三)抽象.docx

ID:59257512

大小:11.82 KB

页数:8页

时间:2020-09-08

面向对象编程(三)抽象.docx_第1页
面向对象编程(三)抽象.docx_第2页
面向对象编程(三)抽象.docx_第3页
面向对象编程(三)抽象.docx_第4页
面向对象编程(三)抽象.docx_第5页
资源描述:

《面向对象编程(三)抽象.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1.3面向对象编程(三)抽象一、继承的补充继承的好处,能够提高代码的复用性,使代码简洁化,但是继承也有一些弊端。比如,恶意的继承就会打破原有父类的封装。我们知道,子类继承父类,就要去覆写父类中的方法,如果父类中的方法不是共有方法,这个方法只有父类能使用,其他的子类都不能使用,如果子类在不知道的情况下覆盖了这个方法,那么这就将父类中封装的这个方法就暴露出来,就会导致原有功能的错误,这就打破了Java的封装。怎样才能解决这个问题呢?Java中有一个关键字:finalfinal:作为一个修饰符。1,它可

2、以修饰类,可以修饰方法,可以修饰变量。2,final修饰的类是一个最终类,不可以被继承。3,final修饰的方法不可以被覆盖。4,final修饰的变量的是一个常量,只能被赋值一次。这个赋值指的是显示初始化赋值。    什么时候将变量修饰成final的呢?   通常在程序中会使用一些不会变化的数据。也就是常见的一些常量值。比如3.14   那么这个数据直接使用是可以的,但是不利于阅读,所以一般情况下,都会被该数据起个容易阅读的名称。   finaldoublePI=3.14;   final修饰的常

3、量定义一般都有规范书写,被final修饰的常量名称,所有字母都大写。   如果由多个单词所组成,每一个单词间用_连接。二、面向对象编程(三)抽象1、什么是抽象,我们先来看一个例子。abstractclassDemo{   abstractvoidshow();//这时这个函数就看不懂了,因为没有方法体。            //这个就需要被标识一下成看不懂的函数。需要一个关键字来修饰一下。abstract(抽象)            //当类中出现了抽象方法后,该类也必须标识成抽象的。}cla

4、ssDemoAextendsDemo{   voidshow()   {      System.out.println("showa");   }}classDemoBextendsDemo{   voidshow()   {      System.out.println("showb");   }}-------------------------------------------------------------------------------------------两个类Demo

5、ADemoB里面都有共性的功能,可以进行抽取。可是功能的声明相同,但是功能的具体内容不同。这时,我们只对相同的功能声明进行抽取。而抽取功能的内容。抽象类就是子类不断向上抽取而来的,只抽取了子类的功能声明,而没有抽取子类的具体的功能内容。所以功能是抽象的,需要定义在抽象类中。抽象类的特点:1,抽象类和抽象方法必须用abstract关键字修饰。2,抽象方法一定要存放在抽象类中。3,抽象类不可以被实例化。也就是不可以通过该类建立对象。   因为抽象类建立对象后,调用抽象方法没意义。4,只有抽象类的子类将

6、抽象类中的抽象方法全都覆盖掉,该子类就可以了建立对象了。   如果只是部分覆盖,那么该子类还是一个抽象类。-----------------------------------------------------------------------------------------------抽象与继承,在形式上是差不多的,主要的差别在于父类,因为父类的方法为抽象的方法,所以父类也必须要使用关键字abstract来修饰,抽象的类必须要被继承,否则就没有存在的意义。抽象类什么时候定义?当我们分析事

7、物时,对对象进行描述时,其实就不断把对象中的共性内容向上抽取。在抽取过程中,发现对象具备相同的功能,但是功能的细节不同。这是在定义类时,该功能是没有具体的实现的,是由具体的对象来完成的。那么该功能就是抽象的。/*       示例(这是一个很经典的例子)需求:公司中程序员有姓名,工号,薪水,工作内容。项目经理除了有姓名,工号,薪水,还有奖金,工作内容。对给出需求进行数据建模。分析:这里有两个具体事物。1,程序员   属性:nameidpay    行为:work()2,项目经理。   属性:nam

8、eidpay bonus   行为:work()发现这两个事物具备共性内容。为了提高代码的复用性。两个事物间是不具备继承关系的。因为两个事物不存在谁是谁中一种。但是,可以确定是无论程序员,还是经理,他们都是公司员工。他们都是员工的一种。而且员工都具备一些基本属性和行为。这时就可以将两个事物向上抽取,出一个员工类。该类中定义就是两个事物共性的内容。*/abstractclassEmployee{   privateStringname;   privateStringid;   pr

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。