Java的特性详解-抽象

抽象

抽象的定义

抽象就是从多个事物中将共性的,本质的内容抽象出来。

抽象类

Java中可以定义没有方法体的方法,该方法的具体实现由子类完成,该方法称为抽象方法,包含抽象方法的类就是抽象类。

由来:

多个对象都具备相同的功能,但是功能具体内容有所不同,那么在抽取过程中,只抽取了功能定义,并未抽取功能主体,那么只有功能声明,没有功能主体的方法称为抽象方法。

抽象类特点:

  • 抽象方法一定在抽象类中;
  • 抽象方法和抽象类都必须被abstract关键字修饰;
  • 抽象类不可以用new创建对象,因为调用抽象方法没意义;
  • 抽象类中的抽象方法要被使用,必须由子类复写其所有的抽象方法后,建立子类对象调用; 如果子类只覆盖了部分的抽象方法,那么该子类还是一个抽象类;
  • 抽象类中可以有抽象方法,也可以有非抽象方法,抽象方法用于子类实例化;
  • 如果一个类是抽象类,那么,继承它的子类,要么是抽象类,要么重写所有抽象方法。
  • 特殊:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象。

抽象类的成员特点:

  • 成员变量:可以是变量,也可以是常量;
  • 构造方法:有构造方法;
  • 成员方法:可以是抽象方法,也可以是非抽象方法。

抽象类注意事项:

1. 抽象类不能被实例化,为什么还有构造函数?

只要是class定义的类里面就肯定有构造函数。抽象类中的函数是给子类实例化的。

2. 一个类没有抽象方法,为什么定义为抽象类?

不想被继承,还不想被实例化。

3. 抽象关键字abstract不可以和哪些关键字共存?

  • final:如果方法被抽象,就需要被覆盖,而final是不可以被覆盖,所以冲突。
  • private:如果函数被私有了,子类无法直接访问,怎么覆盖呢?
  • static:不需要对象,类名就可以调用抽象方法。而调用抽象方法没有意义。

 

在Java中,抽象是一种重要的特性,它提供了一种机制来定义模板或蓝图,用于表示对象的共性特征和行为,而不需要具体实现细节。以下是Java抽象的一些特性的详细解释:

1. 抽象类:抽象类是用关键字"abstract"声明的类。它不能被实例化,即不能创建抽象类的对象。抽象类可以包含抽象方法和非抽象方法。抽象方法是在抽象类中声明但没有具体实现的方法,通过在方法签名中使用"abstract"关键字来表示。抽象类可以包含普通的方法,这些方法在子类中可以直接使用或重写。

2. 抽象方法:抽象方法是在抽象类中声明但没有具体实现的方法。它只有方法的定义,没有方法体。抽象方法用于描述对象的共性行为,具体的实现由子类来完成。通过在方法签名中使用"abstract"关键字来标识抽象方法。如果一个类包含抽象方法,那么它必须是抽象类。

3. 继承和实现:抽象类可以作为其他类的父类,通过继承来实现抽象类的方法。子类需要实现抽象类中的所有抽象方法,否则子类也必须声明为抽象类。与抽象类相比,接口是另一种使用抽象特性的方式。接口定义了一组方法的规范,而不包含具体实现。类可以通过实现接口来使用接口定义的方法。

4. 抽象类的作用:抽象类具有以下作用:
   - 提供了一种通用的模板或蓝图,用于指导子类的设计和实现。
   - 将对象的共性行为和属性抽象为方法和成员变量,提高了代码的可重用性和可维护性。
   - 可以作为其他类的父类,通过继承来实现抽象类中的方法,达到代码复用的目的。
   - 限制某些方法只有子类去实现,以保证代码的一致性和正确性。

请注意,抽象类和抽象方法本身不能被实例化,因此必须通过子类来使用。子类可以选择性实现父类的抽象方法,并可以添加额外的属性和方法。抽象类的设计需要根据具体的业务需求来考虑和使用,合理的抽象设计可以提高代码的可维护性和可扩展性。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值