【JavaSE】abstract 抽象类 快到碗里来 (◕ᴗ◕✿)

编程入门 行业动态 更新时间:2024-10-26 18:27:52

【JavaSE】abstract 抽象类 快到碗<a href=https://www.elefans.com/category/jswz/34/821857.html style=里来 (◕ᴗ◕✿)"/>

【JavaSE】abstract 抽象类 快到碗里来 (◕ᴗ◕✿)

啥是抽象类?抽象类是用来干嘛的?

上层简单总结

所谓抽象类,就是把一些事物的共性总结起来,封装在一个抽象类当中从而形成一个模板,供子类进行继承并实现。子类总体上会保留抽象类的行为方式,并且在父类的基础上进行拓展,改造。

处出于感情的自然流露,大家一定会问:那抽象类和普通的可以被继承的类有啥区别?他们不都是模板吗?既然已经可以继承父类了,那为什么还必须要有抽象类?

其实可以这样理解,java提供抽象类这样一种设计思想,至于使用还是不使用这个设计机制,完全在于编程人员的选择。

那抽象类能解决什么问题?

  • 当功能内部的一部分是确定的,而另一部分是不确定的,这个时候可以把不确定的部分暴露出去,让子类去实现
  • 编写一个抽象父类,父类提供了多个子类的通用方法,并把一个或多个留给其子类实现,就是一种模板模式

快速入门

  • 用abstract关键字来修饰一个类时,这个类就是一个抽象类
  • 用abstract关键字来修饰一个方法时,这个方法就是一个抽象方法
  • abstract关键字只能用来修饰类和方法,并且一个类中只要有一个方法被声明为抽象方法,则这个类也必须被修饰为抽象方法

代码示例如下:

/**
@author Liu Xianmeng
@createTime 2022/11/22 14:32
@instruction 定义一个抽象类用于演示抽象类的定义
*/
@SuppressWarnings({"all"})
public abstract class AbstractClass {int val_1; // 一个抽象类的变量// 抽象类的抽象方法用于子类进行自由拓展public abstract int play();// 抽象类也可以有非抽象的方法 子类可以直接继承public void dancing(){System.out.println("C AbstractClass M dancing()...");}
}

如何使用抽象类

前面说过,抽象类是一个模板,因此只能被子类继承而不能直接实例化

/**
@author Liu Xianmeng
@createTime 2022/11/22 14:37
@instruction 使用这个类继承上一个定义的抽象类
*/@SuppressWarnings({"all"})
public class ImplAbs extends AbstractClass {// 重写构造方法public ImplAbs(int val_1){this.val_1 = val_1;}@Override // 重写抽象类的方法public int play() {return this.val_1;}public static void main(String[] args) {ImplAbs implAbs = new ImplAbs(100);implAbs.play();implAbs.dancing();}
}

使用抽象类注意事项

  • 抽象类不能被实例化(因为它的作用就是定义一个类模板)
  • 抽象类可以没有abstract修饰的方法
  • 抽象方法不能用private、final、static修饰,因为这些关键字都是和重写相违背的
  • 一旦一个类包含了被abstract修饰的方法,那么这个类必须声明为abstract的抽象类
  • abstract只能修饰类和方法而不能修饰属性
  • 抽象类可以有任意成员(他本质还是类),如非抽象方法、构造器、静态属性等等
  • 抽象方法不能有方法体
  • 如果一个类继承了抽象类,那么他必须实现抽象类的所有抽象方法,除非它自己也声明为abstract类

感谢读取 ~

更多推荐

【JavaSE】abstract 抽象类 快到碗里来 (◕ᴗ◕✿)

本文发布于:2023-06-13 09:33:14,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/678969.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:里来   快到   抽象类   JavaSE   abstract

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!