欢迎来到天天文库
浏览记录
ID:59257512
大小:11.82 KB
页数:8页
时间:2020-09-08
《面向对象编程(三)抽象.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
此文档下载收益归作者所有