动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网
首页 > 文章

浅谈Java中的Abstract方法

08-10 17:42 247浏览
举报 T字号
  • 大字
  • 中字
  • 小字

Abstract即抽象,是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征的过程。说到抽象,我们可能会想到许多抽象派的画家,比如说梵高,毕加索。有一说一,抽象这个词还真的是很抽象的,只可意会,不可言传,但是迎难而上,本文尽力为小伙伴们言传一下Java中的Abstract方法,如有不妥之处,多加指正包涵。

我们先来看一下抽象方法的官方定义:在面向对象编程语言中抽象方法指一些只有方法声明,而没有具体方法体的方法。抽象方法一般存在于抽象类或接口中。

java中的抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不需要实现。

下面是抽象方法的特征,我们将围绕其特征展开。

1.抽象方法不允许有方法体,只能以分号“;”结尾

2.抽象方法只能声明在抽象类中 (含有抽象方法的类必须是抽象类)

3.抽象类中可以包含0个或多个抽象方法

4.抽象方法必须被子类实现

5.如果子类不能实现父类中的抽象方法,那么子类也必须是抽象类

当一个方法为抽象方法时,意味着这个方法应该被子类的方法所重写,否则其子类的该方法仍然是abstract的,这个子类由于继承父类,拥有抽象方法,因此它也是抽象类,即声明为abstract。abstract抽象类不能用new实例化对象,abstract方法只允许声明不能实现。如果一个类中含有abstract方法,那么这个类必须用abstract来修饰,当然abstract类也可以没有abstract方法。 一个抽象类里面没有一个抽象方法可用来禁止产生这种类的对象。

interface中所有的方法都是public abstract的,即使你没有申明它是public abstract的。在interface中所有的数据成员都是public static final的,即使你没有申明.但不能是blank final 在编译时候确定的。在Java,interface的地位和class是一样的。实现interface的类,其interface中所有的方法必须被“实现”,否则这个类成为一个抽象类。Interface可以从多个interface得到继承,但是不能继承类。一个类可以实现多个interface。

final和abstract,private和abstract,static和abstract,这些是不能放在一起的修饰符,因为abstract修饰的方法是必须在其子类中实现(覆盖),才能以多态方式调用,以上修饰符在修饰方法时期子类都覆盖不了这个方法,final是不可以覆盖,private是不能够继承到子类,所以也就不能覆盖,static是可以覆盖的,但是在调用时会调用编译时类型的方法,因为调用的是父类的方法,而父类的方法又是抽象的方法,又不能够调用,所以上的修饰符不能放在一起。

抽象方法没有提供实现部分,抽象方法是一种强制派生类覆盖的方法,否则派生类将不能被实例化。如:

//抽象方法

public abstract class Animal

{

    public abstract void Sleep();

    public abstract void Eat();

}

 

 

其实如果类包含抽象方法,那么该类也是抽象的,也必须声明为抽象的。如:

public class Animal

{

    public abstract void Sleep();

    public abstract void Eat();

}

 

抽象方法必须在派生类中重写,这一点跟接口类似

public abstract class Animal

{

    public abstract void Sleep();

    public abstract void Eat();

}

 

public class Cat : Animal

{

    public override void Sleep()

    {

        Console.WriteLine( "Cat is sleeping" );

    }

    // we need implement Animal.Eat() here

 

}

编译器会报错:Main.cs(14): 'VSTest.Cat' does not implement inherited abstract member 'VSTest.Animal.Eat()',因为我们没有实现抽象类中所有抽象方法。

看完了本文,相信小伙伴们对Java中的Abstract方法也有了一定的了解,基本掌握了其用法,但这只是学习Java中Abstract方法的开始,想要更深入学习Java中Abstract方法,可以观看本站的Java课程,里面有各种java方法的讲解和实例,让你学习Java快人一步!

0人推荐
共同学习,写下你的评论
0条评论
熊熊爱吃可爱多
程序员熊熊爱吃可爱多

6篇文章贡献27254字

作者相关文章更多>

推荐相关文章更多>

Java数据结构

HelloWorld10-31 08:24

浅谈MySQL中SQL优化的常用方法

军哥08-12 23:29

五分钟读懂UML类图

江湖人称小李白12-10 10:41

MyBatis开发框架的四大核心

IT逐梦者08-17 21:43

一次搞定continue,break和return

HelloWorld11-06 11:19

发评论

举报

0/150

取消