抽象方法和抽象类

抽象类:用abstract修饰符修饰的类,如:

public abstract class GeneralService { }

抽象方法:用abstract修饰符修饰的方法,抽象方法不能有方法体,如:

public abstract void service();

抽象类和抽象方法的规则如下:

  1. 必须用abstract修饰符修饰
  2. 抽象类不一定包含抽象方法,但含有抽象方法的类一定是抽象类
  3. 抽象类不能被实例化
  4. 抽象类的构造器不能用于创建对象,主要是用于被其子类调用

下面定义一个Shape抽象类:

/** * 定义一个抽象类,用于描述抽象概念的“形状” */public abstract class Shape {​ // 形状的 颜色 private String color;​ public String getColor() { return color; }​ public void setColor(String color) { this.color = color; }​ // 带参构造器 public Shape(String color) { this.color = color; }​ // 定义一个计算周长的抽象方法 public abstract double calPerimeter();}

上面的Shape类中包含了一个抽象方法calPerimeter(),所以Shape类只能是抽象类。Shape类中既包含初始化块,又包含构造器,不过这些都不是在创建Shape对象时被调用的,而是在创建其子类对象时被调用。

下面定义一个Triangle类和一个Circle类,让他们继承Shape类,并实现Shape中的抽象方法calPerimeter()。

/** * 定义一个三角形类,继承自形状类 */public class Triangle extends Shape {​ // 定义三角形的三条边 private double a; private double b; private double c;​ public Triangle(String color, double a, double b, double c) { super(color); this.a = a; this.b = b; this.c = c; }​ @Override public double calPerimeter() { return a + b + c; }}/** * 定义一个圆形类,继承自形状类 */public class Circle extends Shape {​ // 定义圆的半径 private double radius;​ public Circle(String color, double radius) { super(color); this.radius = radius; }​ @Override public double calPerimeter() { return 2 * Math.PI * this.radius; }}​

Shape(形状)类是一个抽象的概念,Triangle(三角形)类和Circle(圆形)类是Shape的具象,它们都各自实现了Shape的calPerimeter()方法,两者计算周长的公式不一样。

下面是测试类:

/** * 测试类 */public class Test { public static void main(String[] args) { Shape s1 = new Triangle("黄色

抽象方法可以有方法体_抽象类和模板方法设计模式相关推荐

  1. 抽象方法可以有方法体_什么方法可以祛斑?祛斑的方法有哪些?

    现在是一个看脸的时代,可能不那么准确,但是也说明了人们对于美好脸蛋的追求.完美的脸蛋必定是光滑白皙没有瑕疵的,而有了色斑就会损害整个人的颜值.祛斑的方法有哪些?若是您正深受长斑的烦恼,小编专门寻找了一 ...

  2. 抽象方法可以有方法体_装配滑动轴承和滚动轴承的方法|垫片|轴瓦|轴套|轴承体...

    轴承是用来支撑的部件,也是用来支撑轴上回转的零件,轴承的种类按摩擦性质分:有滑动轴承和滚动轴承:按承受载荷的方向分:有向心轴承.推动轴承.向心推力轴承等. 1.滑动轴承的装配 滑动轴承是一种滑动摩擦性 ...

  3. Java 基础进阶篇(四):抽象类与模板方法设计模式

    文章目录 一.抽象类.抽象方法概述 二.抽象类的特征 三.模板方法设计模式 3.1使用场景 3.2 实现步骤 3.3 写作文案例 补充:final 和 abstract 是什么关系? 一.抽象类.抽象 ...

  4. 12_星仔带你学Java之代码块、final修饰符、基本类型包装类、抽象类、模板方法设计模式讲解

    大家好,我是

  5. java面向对象编程_包_继承_多态_重载和重写_抽象类_接口_this和super

    目录点击跳转 包 包的命名方法 导入包中的类 系统包的介绍 **注意事项** 继承 基础知识 构造方法 **基础语法** `protected`修饰符 组合 `this`和`super`关键字 `th ...

  6. 抽象类和模板方法模式

    抽象方法和抽象类 抽象类:用abstract修饰符修饰的类,如: public abstract class GeneralService {} 抽象方法:用abstract修饰符修饰的方法,抽象方法 ...

  7. 黑马程序员_抽象类和接口

    ------- android培训.java培训.期待与您交流! ---------- ★抽象类 我们在定义一个类的时候,常常需要定义方法来描述该类的行为特征, 但有的时候这个(方法)的{方法体}怎样 ...

  8. 【26天高效学完Java编程】Day11:继承、抽象类、模板设计模式详解

    本专栏将从基础开始,循序渐进,由浅入深讲解Java的基本使用,希望大家都能够从中有所收获,也请大家多多支持. 专栏地址:26天高效学习Java编程 相关软件地址:软件地址 所有代码地址:代码地址 如果 ...

  9. 0047 抽象类、模板设计模式

      /*抽象类1.用abstract关键字来修饰一个类时,这个类就叫抽象类访问修饰符 abstract 类名{}2.用abstract关键字来修饰一个方法时,这个方法就是抽象方法访问修饰符 abstr ...

最新文章

  1. asp.net实现在网页上自动显示超链接以及Email地址
  2. OSChina 周六乱弹 —— 胖点其实挺好
  3. 一张膜能把电信运营商挡在手机支付门外吗?
  4. 手把手教你安装OpenStack——Ocata安装指南(上)
  5. 【2012年华为校园招聘软开上机-成都】字母转换、统计单词个数
  6. LeetCode 126. 单词接龙 II(图的BFS)
  7. 除了给予人权,欧洲议会还要让机器人纳税
  8. 【转】Netty那点事(一)概述
  9. VS2010安装MVC4记录
  10. HMM学习(2)-Generating Patterns
  11. 易进难出,“Vim 退出” 难住百万程序员
  12. 对抗训练fgm、fgsm和pgd原理和源码分析
  13. 小红帽免费酒店管理系统PMS
  14. 佳能打印机扫描文件到电脑显示设置计算机,电脑教程:佳能打印机怎么扫描文件到电脑...
  15. XCTF|PWN-string-WP
  16. 73个GitHub高级搜索技巧
  17. python程序30行_30行Python代码刷王者荣耀金币,还怕没有金币买英雄?
  18. QT项目负责人必须掌握的Ui设计师功能——Promote to !
  19. Unity基础之EasyAR
  20. STC12C5A60S2自主适应时钟延时函数

热门文章

  1. Firefox3与WEB客户端开发相关的新特性
  2. 对神经网络分类行为的认识二则
  3. python 多元线性回归_Python机器学习,多元线性回归分析问题
  4. java单例注册表_Spring对单例的底层实现,单例注册表
  5. kafka 不同分区文件存储_Kafka深入理解-1:Kafka高效的文件存储设计
  6. 使用iso升级_华佗品牌战略升级 彰显百年品质-产经要闻
  7. 【控制】二阶 UGV 的无穷时间状态输入性能最优解算
  8. 【控制】《多智能体系统一致性协同演化控制理论与技术》纪良浩老师-第3章-有向二阶多智能体系统脉冲一致性
  9. Linux zip 加密压缩
  10. 【复习】服务器主板——Leez P710