面向对象---抽象

抽象

一、概述

1、 为什么需要抽象

有的时候,多个子类的方法声明相同、方法体不同;这个时候也可以抽取方法声明,不抽取方法体;从而让开发中知道该子类有这个特性,便于维护;

2、抽象类意义

(1)封装子类共有的属性和行为-------------代码复用

(2)为所有子类提供一种统一的类型---------向上造型

(3)为所有子类提供统一的方法入口 :每个子类的实现不同,但入口是一致的,入口就是抽象方法;

二、抽象类

1、        概述

当定义了抽象方法的类也必须被abstract关键字修饰,被abstract关键字修饰的类是抽象类。

2、        定义的格式:

abstract class 类名 {

}

3、        特征

抽象类和方法:抽象类和抽象方法都需要被abstract修饰。抽象方法一定要定义在抽象类中。抽象类中可以不定义抽象方法;

对象:抽象类不可以直接创建对象,原因:调用抽象方法没有意义。

子类:只有重写了抽象类中所有的抽象方法后,其子类才可以创建对象。否则该子类还是一个抽象类。

三、抽象方法

1、 概述

分析事物时,发现了共性内容,就出现向上抽取。会有这样一种特殊情况,就是方法功能声明相同,但方法功能主体不同。那么这时也可以抽取,但只抽取方法声明,不抽取方法主体。那么此方法就是一个抽象方法。

2、 定义格式

只有方法的定义,没有方法具体的实现(连{}都没有)

 

public abstract 返回值类型 方法名(参数);

四、抽象关键字

1、抽象关键字abstract不可以和哪些关键字共存?  

l  1、private:私有的方法子类是无法继承到的,也不存在覆盖,而abstract和private一起使用修饰方法,abstract既要子类去实现这个方法,而private修饰子类根本无法得到父类这个方法。互相矛盾。

l  2、final,暂时不关注,后面学

l  3、static,暂时不关注,后面学

五、面试题

1, 抽象类中是否可以没有抽象方法?如果可以,那么,该类还定义成抽象类有意义吗?为什么?

可以没有抽象方法,有意义,不会让其他人直接创建该类对象

向成为千里马奋斗,为伯乐打call;
原文地址:https://www.cnblogs.com/mhy666/p/9347329.html