抽象类

抽象类的概念

Java中允许在类中只声明方法而不提供方法的实现。这种只有声明而没有方法体的方法成为抽象方法,而包含一个或者多个抽象方法的类称为抽象类。
抽象方法是通过指定abstract关键字来创建。抽象方法没有内容,因此不需要被父类执行,所以子类必须重写抽象方法
抽象方法声明如下:

abstract returnType abstractMethod([paramlist]) ;

其中没有方法体,必须子类继承并且重写。
abstract只能用于普通方法,它不能用于static方法或者类的构造方法。
抽象类声明如下:

abstract class AbstractClass{
...
}

抽象类包含一个或者多个抽象方法,必须在class前使用abstract关键字将类声明为抽象类,抽象类也可以包含一些非抽象的方法,例外的是,没有抽象方法的类也可以通过添加abstract关键字将其声明为抽象类。(这种类型的类往往没有必要定义任何抽象方法,但是设计者又想要禁止创建该类的实例化对象,此时只需要在类的声明前加上abstract关键字即可)
一个抽象类只关心是否具有某种功能,而不关心功能的具体实现,功能的具体行为和属性由子类负责实现。所以抽象类没有自己的实例化对象,在编译时,使用new创建抽象类实例化对象会报错。

注意:如果定义了一个抽象类,当子类继承一个抽象类时,子类要重写父类中的所有抽象方法,否则需要将子类也声明为abstract抽象类。

利用抽象类实现多态


abstract class Animal{
	abstract void breathe();		//抽象方法
	
	abstract void move();		//抽象方法
	
	public void breed() {
		System.out.println("动物会繁衍生息");	//普通方法
	}
	
}

class Dog extends Animal {
	void breathe() {
		System.out.println("狗狗用肺呼吸");		//父类抽象方法重写
	}
	
	void move() {
		System.out.println("狗狗用四条腿跑");	//父类抽象方法重写
	}
	
	
}

class Fish extends Animal {
	void breathe() {	
		System.out.println("鱼儿用鱼鳃呼吸");		//父类抽象方法重写
	}
	
	void move() {
		System.out.println("鱼儿会游泳");			//父类抽象方法重写
	}
	
}

//测试类
public class TextAbstract {

	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Animal animal = new Dog();			//上溯造型对象
		animal.breed();						//调用从父类继承的成员方法
		animal.breathe();					//调用子类Dog中重写的抽象方法
		animal.move();
		Fish fish = new Fish();				//调用子类Fish
		fish.breed();
		fish.breathe();
		fish.move();
	}

}
/**
动物会繁衍生息
狗狗用肺呼吸
狗狗用四条腿跑
动物会繁衍生息
鱼儿用鱼鳃呼吸
鱼儿会游泳
*/

抽象类的作用

抽象类不能实现实例化对象,程序中定义抽象类的目的是为同一类对象建立抽象的模板,在同类对象所对应的类体系中,抽象类往往在顶层中。这样可以使类的设计更加清晰,同时也为类的体现提供通用的接口。这些接口反映了同一类对象的共同特征。定义了抽象类后,可以利用Java的多态性,通过抽象类的通用接口处理类体系中的所有类。

定义抽象类和抽象方法是向用户和编译器表明该类的作用和用法,使类体系设计更加清晰,并支持多态。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值