java抽象类

Java抽象类

再Java语言中,存在创建专门的类来作为父类,这种类就被称为抽象类。抽象类有点类似“模板”的作用,其目的是根据他的格式来创建和修改新的类。

下面先看一个例子:

abstract class Animal {
	public abstract void description();
}

class Dog extends Animal{
	public void description(){
		System.out.println("this is a dog");
	}
}

class Cat extends Animal{
	public void description(){
		System.out.println("this is a cat");
	}
}

在上面这个例子中, Animal的方法是不用的方法,若要调用这个方法,就会出现一些错误。这是因为Animal类的目的是为他的所有导出类创造一个通用接口。

如果我们只有一个像Animal这样的抽象类,那么该类的对象是几乎没有任何意义的。创建一个抽象类是希望通过一个接口来操纵一系列的类。又因抽象类中的抽象方法没有具体实现,创建一个Animal对象是没有什么意义的。


抽象方法

Java中提供了一种叫做抽象方法的机制,这种方法是不完整的,在抽象类或者接口中仅有声明而没有方法体。如上例中Animal中的description()方法或者又如下:

 abstract void bot();


抽象类

包含抽象方法的类就是抽象类,当一个类中包含一个或多个抽象方法时,这个类就必须是抽象类。抽象类中可以包含普通的方法和参数,但是普通的类中不可以包含抽象方法。

且抽象类是一个不完整的类,当我们试图获取该类的实例对象时(使用new关键字),编译器会怎么处理呢?因为抽象类的对象是不安全的,当我们进行编译时就会返回错误信息。当我们想获得一个抽象类的对象时,我们可以通过获取子类的实例来给予抽象类对象,即通过向上转型的方法来获取抽象里对象的实例。

如果一个类继承抽象类,并且想创建该子类的对象,那么它就必须为父类(抽象类)中所有的抽象方法提供方法的定义,即重写父类中的抽象方法。当然我们也可以不选择这么做,那么子类也便是抽象类,且编译器会强制我们用abstract关键字来定义这个类


抽象类的特点

1.抽象类中可以包含普通的方法(具有方法体)和参数,但是必须要有一个或多个抽象方法

2.抽象类不可以用new直接产生实例对象,但是可以通过向上转型来获得实例

3.抽象类为单继承,接口为多继承

4.子类必须重写父类的抽象方法,不然子类还是抽象类


抽象类的作用

抽象类主要作用是作为模板设计,类似于设计图。如上例中,我有一个动物设计图,我在Animal类中加入eat抽象方法,其意就如动物要吃东西,延伸到子类中,狗的方法重写就是狗吃骨头,猫的方法重写就是猫吃鱼。我们有了模板,往下再怎么做就可以根据对象不同再进行不同的实现。

创建抽象类和抽象方法非常有用,因为他们可以使类的抽象性明确起来,并告诉用户和编译器怎么使用它们。抽象类是很有用的重构工具,因为他们使得我们可以很容易的讲公共方法沿着继承层次结构向上移动。


本人目前也是本科生正在学习中,写此博文供同我相同的初学者进行参考,如果有什么错误或者缺漏,望大家告知。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值