java面向对象20_抽象类(abstract)

1.抽象类概述

当编写一个类时,我们往往会为该类定义一些方法,这些方法是用来描述该类的功能具体实现方式,那么这些方法都有具体的方法体。

但是有的时候,某个父类只是知道子类应该包含怎么样的方法,但是无法准确知道子类如何实现这些方法。比如一个图形类应该有一个求周长的方法,但是不同的图形求周长的算法不一样。那该怎么办呢?

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

例如:描述讲师的行为:工作。

描述助教的行为:工作。

描述班主任的行为:工作。

讲师、助教、班主任之间有共性,可以进行向上抽取。抽取它们的所属共性类型:员工。由于讲师、助教、班主任都具有工作功能,但是他们具体工作内容却不一样。这时在描述员工时,发现了有些功能不能够具体描述,那么这些不具体的功能,需要在类中标识出来,通过java中的关键字abstract(抽象)来修饰。

方法只有声明没有实现,用abstract来修饰,该方法就是抽象方法。抽象方法必须定义在抽象类中,该类也用abstract修饰。

2.抽象类的使用

抽象类的定义:权限修饰符 abstract class 类名 {}

抽象方法的定义:权限修饰符 abstract 返回值类型 方法名(参数列表) ;

【示例】抽象类&抽象方法的定义

// 抽象类,员工类
abstract class Employee {
	// 抽象方法,用abstract修饰,只有声明没有实现
	public abstract void work();
}
// 讲师类
class Teacher extends Employee {
	@Override
	public void work() { // 实现抽象方法
		System.out.println("老师讲java课");
	}
}
// 助教类
class Assistant extends Employee {
	@Override
	public void work() { // 实现抽象方法
		System.out.println("助教协助同学解决bug");
	}
}

3.抽象类的特点

抽象类的特点:

  1. 用abstract修饰的类称之为抽象类。

  2. 抽象类不能被实例化,因为抽象方法只有声明,无法用对象调用该方法。

  3. 抽象方法可以定义成员变量和静态变量。

  4. 抽象类可以有构造方法,方便子类创建对象时给抽象类的属性赋值。

  5. 抽象类中可以定义普通方法,也可以定义抽象方法(没有抽象方法也可以)。

  6. 抽象类一定是一个父类,需要子类重写父类的抽象方法,然后在实例化使用。

抽象方法的特点:

  1. 用abstract修饰的方法称之为抽象方法。

  2. 抽象方法只有方法声明,没有方法体。

  3. 子类要么实现父类的抽象方法,要么子类也是一个抽象类,否则编译失败。

  4. 抽象方法只能存在于抽象类或接口中,不能存在于普通类中。

注意:abstract 关键字不能和private、final、static关键字共存!

ps:如需最新的免费文档资料和教学视频,请添加QQ群(627407545)领取。

发布了55 篇原创文章 · 获赞 0 · 访问量 788

猜你喜欢

转载自blog.csdn.net/zhoujunfeng121/article/details/104619453