MEC@JavaSE@基础篇@笔记15@抽象类与抽象方法

it2024-10-05  41

一、抽象类与抽象方法

1、抽象类介绍

抽象方法:

用关键字abstract修饰一个方法,并且只“声明”而不具体实现这个方法,就可以生成一个抽象方法。

抽象方法的定义格式:

public abstract 返回值类型 方法名(参数列表); public abstract double perimeter();

抽象类:

如果一个类中存在抽象方法,那么该类就必须声明为抽象类。

抽象类给抽象方法提供存活空间

抽象类的定义格式:

public abstract class 类名{} public abstract class Shape{}

代码示例:

package com.mec.about_abstract.core; /* 抽象类: 理解层面来说, 就是把像的部分和相似的部分, 抽取到一个父类中 (共性行为向上抽取) 当行为被抽取到父类中之后, 发现这个行为在父类中描述不清了. 且该行为还是子类必须要做的事, 就将其定义为抽象方法. 抽象方法需要存活在抽象类当中. ​ 简单记: 抽象类就是一个特殊的父类, 该父类中可以定义抽象方法. */ public abstract class Shape { protected String name; public Shape() { } public Shape(String name) { this.name = name; } public abstract double perimeter(); public abstract double area(); }

 

2、抽象类的注意事项

抽象类不能实例化,因为本类中存在为实现的方法

抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类

可以有构造方法

由抽象类派生出的子类,如果依然没有实现其抽象方法,则,这个子类也一定是抽象类。

3、抽象类中常见问题解答

问题1: 抽象类为什么不能实例化(创建对象)?

一旦允许创建对象, 就可以调用内部没有方法体的抽象方法了.

问题2: 抽象类既然不能创建对象, 那构造方法有什么作用?

交给子类去访问的。创建子类对象,会调用父类的构造对父类中私有的成员变量进行赋值。

问题3: 抽象类可以没有抽象方法吗?

可以没有抽象方法, 但有抽象方法的类一定是抽象类。

问题4: 作为抽象类的子类, 需要注意什么?

必须重写所有的抽象方法.

将自己也变成一个抽象类 (不推荐,因为这样做没有意义)

4、抽象类编程核心思想解读

抽象类由“确定的成分”和“不确定的成分”两部分组成。

“确定的成分”通常是那些类中固定的,固有的和确定的成员变量,方法组成;这些成分在抽象类中实现,再用派生的方式让子类继承,从而实现了“代码复用”。

“不确定的成分”是那些类彼此有相同、又不同的部分。相同点在于,这些类中都存在这些成分;不同点在于,这些成分的具体实现方法不同(代码逻辑不同)。

如果一个类中存在这么一种功能(方法):这个功能不是有这个类实现,或者说,它无法确定其实现的过程,但是,又要用到这个功能以便实现其他“确定”的功能,那么,就可以把这个“不确定”、当前无法实现的功能声明为抽象方法,以待其派生类实现它。

 

 

最新回复(0)