当前位置: 首页 > news >正文

Java—抽象类

目录

1、认识抽象类

2、使用抽象类的好处

​编辑3、模版方法设计模式


1、认识抽象类

在Java中有一个关键字叫:abstract,它就是抽象的意思,可以用它修饰类,成员方法

  • abstract修饰类,这个类就是抽象类
  • abstract修饰方法,这个方法就是抽象方法。

抽象类和抽方法的格式

修饰符 bastract  class 类名{

        //抽象方法:必须abstract修饰,只有方法签名,不能有方法体

        修饰符 abstract 放回值类型 方法名称(形参列表); 

}

抽象类的注意事项

  • 抽象类中不一定要有抽象方法,有抽象方法的类必须是抽象类。
  • 类有的成员:成员变量、方法、构造器、抽象类都可以有。

抽象类最主要的特点:

  • 抽象类不能创建对象,仅仅作为一种特殊的父类,让子类继承并实现。
  • 一个类继承抽象类,必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类。

2、使用抽象类的好处

        父类知道每个子类都要做某个行为,但每个子类要做的情况不一样,父类就定义成抽象方法,交给子类去重写实现,我们设计这样的抽象类,就是为了更好的支持多态。

 Animal 类抽象类

public abstract class Animal {//动物的叫声,因为每个动物的叫声都不同,所以抽象方法。//好处一:简化方法体。public abstract void cry();
}

Cat类:继承了Animal抽象类重写了cry方法

public class Cat extends Animal{@Overridepublic  void cry(){System.out.println("(>^ω^<)喵喵喵喵~~~");}
}

God类:继承了Animal抽象类重写了cry方法

public class God extends Animal{@Overridepublic void cry(){System.out.println("狗汪汪汪~~~");}
}

Test类:测试类

public class Test {public static void main(String[] args) {//使用抽象类的好处Animal animal = new Cat();animal.cry();}
}
/*
输出:
(>^ω^<)喵喵喵喵~~~*/

3、模版方法设计模式

  • 提供一个方法作为完成某个类功能的模版,模版方法封装了每个实现步骤,但允许子类提供特定步骤的实现。
  • 模版方法设计模式可以:提高代码的复用,并简化子类设计

模版方法设计模式的写法步骤:

1、定义一个抽象类。

2、在里面定义2个方法

        一个模版方法:把共同的实现步骤方里面去。

        一个是抽象方法:不确定的步骤,交给具体的子类来拿完成。

        下面举个例子分别用普通方法和模版方法设计模式类实现:老师和学生同写一篇作文,作文有一个模版,模版的第一段和第三段相同,写作文的时候只需要写第二段即可。

普通版本

Student 类

public class Student {public void write(){System.out.println("第一段相同");System.out.println("学生的第二段");System.out.println("第三段相同");}
}

Teacher 类

public class Teacher {public void write(){System.out.println("第一段相同");System.out.println("老师的第二段");System.out.println("第三段相同");}}

Test 类

public class Test {public static void main(String[] args) {Student s = new Student();s.write();}
}
/*
输出:
第一段相同
学生的第二段
第三段相同*/

模版方法设计模式类实现

People 类:抽象类

public abstract class People {public void write(){System.out.println("第一段相同");wrideMain();//调用抽象方法,在子类中重写了System.out.println("第三段相同");}public abstract void wrideMain();
}

Student 类:继承了People类

public class Student extends People{@Overridepublic void wrideMain() {System.out.println("学生的第二段");}
}

Teachar类:继承了People类

public class Teacher extends People{@Overridepublic void wrideMain(){System.out.println("老师的第二段");}
}

Test类:测试类

public class Test {public static void main(String[] args) {People s = new Student();s.write();}
}
/*
输出:
第一段相同
学生的第二段
第三段相同*/

多学一招

建议使用final关键字修饰模版方法,为什么?

  • 模版方法是给子类直接使用的,不能被子类重写。
  • 一但子类重写了模版方法,模版方法就失效了。
http://www.dtcms.com/a/536339.html

相关文章:

  • 坛墨网站建设wordpress 邀请
  • idc网站模版百度提交
  • 树莓派3B+降低功耗及恢复脚本
  • 开源项目解读4-高性能并发缓存库Ristretto
  • 《微信小程序》第五章:登录-API封装
  • MYSQL数据库入门操作
  • 青岛建设集团网站101工业设计有限公司
  • wordpress 网站上传到服务器错误怎么建设手机网站
  • MySQL 下载、安装及配置教程(Msi安装)
  • AWS CloudTrail 可观测最佳实践
  • 商城网站设计公司十大奢侈品排名
  • 建设部网站从哪登陆网站建设学什么书
  • STM32学习(MCU控制)(NVIC)
  • C++11新特性:强类型枚举/编译期断言/元组
  • 个人做网站的注意事项动漫做暧视频网站
  • 高并发电商架构设计与落地:从微服务拆分到全链路优化
  • 无人机电调芯片替换全解析:从 AM32 架构到 STM32F072、GD32E230 与 AT32F421 的实战对比
  • 郴州市建设网站ps软件下载免费中文版
  • 选择扬中网站建设做电商一个月可以赚多少钱
  • flutter开发的音乐搜索app
  • 介绍一下Ribbon的工作原理
  • Linux系统中安装部署开源的建站、博客工具——Halo
  • 【论文精读】STREAM:视频生成模型的时空评估新指标
  • 建设网站的模板下载福田企业网站优化有用吗
  • 网站建设公司营业范围app公司是做什么的
  • KP3310SGA线性降压无电感替代阻容降压220V转5V3.3V2.7V
  • 【 国产信创系统】udev监测USB事件
  • 洒长春菩网站建设我要浏览国外网站怎么做
  • 【JUnit实战3_16】第九章:容器内测试(上)
  • 面向对象编程练习题