• 二、Java面向对象(14)_抽象类和抽象方法


    2018-05-06

     

    抽象类和抽象方法

     

    一、抽象的使用

      当父类的某些方法不确定时,可以用abstract关键字来修饰该方法[抽象方法],用abstract来修饰该类[抽象类]。

      我们都知道,父类是将子类所共同拥有的属性和方法进行抽取,这些属性和方法中,有的是已经明确实现了的,有的还无法确定,那么我们就可以将其定义成抽象,在后日子类进行重用,进行具体化。这样,抽象类也就诞生了。

      例如,定义了“动物”父类,其中“动物名称”和“动物年龄”属性已经明确了,但是“动物叫”的方法没有明确,此时就可以将“动物叫”定义为抽象方法。

      所以,抽象类是为了把相同的但不确定的东西的提取出来,为了以后的重用。定义成抽象类的目的,就是为了在子类中实现抽象类。 

    二、抽象方法

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

      特点:

      1、使用abstract修饰,没有方法体,子类应该覆盖(实现)父类的所有抽象方法。

      2、抽象方法不能使用private,final,以及static修饰。

        子类不能访问父类的private方法,final修饰的方法不能被继承,static是类级别,此时不叫覆盖而是称之为隐藏。

      3、抽象方法必须定义在抽象类或接口中(如果一个方法存在在一个类中,那么这个类必须使用abstract来修饰)。

    三、抽象类

      当一个方法为抽象方法时,意味着这个方法应该被子类的方法所重写,否则其子类的该方法仍然是abstract的,这个子类由于继承父类,拥有抽象方法,因此它也是抽象类,即声明为abstract。

      abstract抽象类不能用new实例化对象,abstract方法只允许声明不能实现。如果一个类中含有abstract方法,那么这个类必须用abstract来修饰,当然abstract类也可以没有abstract方法。

      特点:

      1、抽象类不能用new实例化对象。

      2、抽象类中不一定要包含abstrace方法。也就是,抽象中可以没有abstract方法。一旦类中包含了abstract方法,那类该类必须声明为abstract类。

      3、如果子类没有实现(覆盖)父类的所有抽象方法,那么子类也是抽象类(因为此时子类的方法还是抽象方法,而抽象方法所在的类必然是抽象类)。

      4、抽象类的构造方法不能声明为private,否则不能有子类(创建子类对象前先调用父类方法)。

      5、抽象类不能声明为final,因为必须要有子类,抽象方法才得以实现。

      6、抽象类不完整,必须要有子类,功能才得以实现。

    抽象类中可以不存在抽象方法,可以防止外界创建对象。

      

    四、抽象类和普通方法的区别

      普通类所具有的成员(字段、方法、构造器),抽象类都可以存在。

      区别在于:抽象类不能创建对象,且抽象类可以存在抽象方法。

      

  • 相关阅读:
    ASP.NET MVC EF4.1
    RabbitMQ Boot Step
    图书商城项目总论
    CodeSharp.EventSourcing框架介绍如何实现异步事件订阅
    asp.net的cms 原理篇
    异步编程:线程概述及使用
    2012
    CodeSharp.EventSourcing框架介绍
    最近开发的一个文档管理系统
    团队项目开发
  • 原文地址:https://www.cnblogs.com/sunNoI/p/8997537.html
Copyright © 2020-2023  润新知