关于抽象类和抽象方法
/*** 抽象类:* 1、什么是抽象类?* 类和类之间具有共同特征,将这些共同特征提取出来形成的类就是抽象类。* 因为类本身就是不存在的,所以抽象类不能创建对象(也可以说是:抽象类无法实例化)* 2、抽象类属于什么类型?* 抽象类也属于引用数据类型。* 3、抽象类怎么定义?* 语法:[修饰符列表] abstract class 类名{* 类体;* }* 4、抽象类是无法实例化的,无法创建对象,所以抽象类是用来被子类继承的* 5、final和abstract不能联合使用,这两个关键字是对立的* 6、抽象类的子类还可以是抽象类、也可以是非抽象类。* 7、抽象类虽然无法实例化,但是抽象类有构造方法,这个构造方法是供子类使用的* 8、抽象类关联到一个概念:抽象方法,什么是抽象方法?* 抽象方法表示没有实现的方法,没有方法体的方法。例如:* public abstract void doSome();* 抽象方法的特点:* - 没有方法体,以分号结尾。* - 修饰符列表中有abstract关键字。* 9、抽象类中不一定有抽象方法,但是抽象方法一定是出现在抽象类中。* 10、一个非抽象类继承一个抽象类,必须对抽象类中的抽象方法进行覆盖/重写/实现。* 11、抽象类的作用:* 降低接口实现类与接口之间实现难度* 实现类中不需要的接口中的方法,可以由抽象类去继承,实现类再去继承抽象类,实现类就可以不去实现该方法。*//* 实例: 需求: (1)定义一个抽象类Weapon,该抽象类有两个抽象方法attack(),move() 这两个方法分别表示武器的攻击方式和移动方式。(2)定义3个类:Tank,Fighter,WarShip都继承自Weapon, 分别用不同的方式实现Weapon类中的抽象方法。编写测试程序main方法,创建多个不同武器的实例。并分别调用attack()和move()方法。 能用多态尽量使用多态。*/ public class AbstractText {public static void main(String[] args) {//创建不同的武器装备//创建坦克(父类型引用指向子类型对象 多态)Weapon w1 = new Tank();//创建攻击机(父类型引用指向子类型对象 多态)Weapon w2 = new Fighter();//创建军舰(父类型引用指向子类型对象 多态)Weapon w3 = new WarShip();//调用方法w1.attack();w1.move();w2.attack();w2.move();w3.attack();w3.move();} } /* 程序运行输出结果:坦克发射炮弹,开始攻击!坦克移动,开始转移阵地!攻击机发射导弹,开始发动攻击!攻击机进入跑道,准备起飞!军舰发射远程导弹,发动攻击!军舰起锚,开始远航!*/ //武器类(抽象类 父类) abstract class Weapon{//攻击的方法(抽象方法)public abstract void attack();//移动的方法public abstract void move(); } //坦克类(非抽象类 子类 继承武器类) class Tank extends Weapon{//重写父类方法@Overridepublic void attack() {System.out.println("坦克发射炮弹,开始攻击!");}//重写父类方法@Overridepublic void move() {System.out.println("坦克移动,开始转移阵地!");} } //攻击机类(非抽象类 子类 继承武器类) class Fighter extends Weapon{//重写父类方法@Overridepublic void attack() {System.out.println("攻击机发射导弹,开始发动攻击!");}//重写父类方法@Overridepublic void move() {System.out.println("攻击机进入跑道,准备起飞!");} } //军舰类(非抽象类 子类 继承武器类) class WarShip extends Weapon{//重写父类方法@Overridepublic void attack() {System.out.println("军舰发射远程导弹,发动攻击!");}//重写父类方法@Overridepublic void move() {System.out.println("军舰起锚,开始远航!");} }
关于抽象类和抽象方法相关推荐
- 【C#小知识】C#中一些易混淆概念总结(七)---------解析抽象类,抽象方法
目录: [C#小知识]C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用 [C#小知识]C#中一些易混淆概念总结(二)--------构造函数,this关键字 ...
- java抽象类与抽象方法详解+练习题
抽象类与抽象方法 一.为什么使用抽象方法和抽象类 二.抽象方法 抽象方法指一些只有方法声明,而没有具体方法体的方法. 结构 abstract class 类名称 // 定义抽象类 {声明数据成员;访问 ...
- java中的抽象类和抽象方法
知识点:java中的抽象类和抽象方法 关键字abstract意为抽象的,可以用来修饰类和方法,分别称作抽象类和抽象方法 抽象类一般在多态的场景中使用 一:抽象类(abstract class) 在类的 ...
- 二十四、深入Java抽象类,抽象方法和接口
@Author:Runsen @Date:2020/5/31 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排 ...
- php抽象的案例,php抽象类和抽象方法的例子
/** * php抽象类与抽象方法的例子 * edit: www.jbxue.com */ abstract class Animal{ function __construct($name='No- ...
- java中抽象类与抽象方法的使用问题
从面向对象设计的角度来说,抽象类与抽象方法,接口都是必不可少的内容,正是这些概念以及实际运用,够成了java面向对象的核心与强大,抽象类,方法是和多态密不可分的设计范式.... 何为多态?简单的说就是 ...
- Java 抽象类和抽象方法
Java 抽象类和抽象方法 抽象类是它的所有子类的公共属性的集合,是包含一个或多个抽象方法的类. 使用抽象类可以充分利用这些公共属性来提高开发和维护程序的效率. 抽象方法必须为public或prote ...
- 抽象类和抽象方法----java
抽象类和抽象方法----java 抽象方法:使用abstract修饰的方法,没有方法体,只能声明.定义的是一种"规范",就是告诉子类必须要给抽象 方法提供具体的实现.抽象类:使用a ...
- 抽象类与抽象方法 abstrack java
抽象类与抽象方法 abstrack java 抽象类 如果有一个类,不希望被实例化 可以通过关键字 abstract 把它变成抽象类 可以约束其他程序员的行为 抽象方法 父类的方法如果没有任何意义 可 ...
- 抽象类与抽象方法 c# 1613720553
抽象类与抽象方法 c# 1613720553 如果一个类不打算实例化 它只用于提供一些子类必需实现的方法 可以考虑把它们抽象化 抽象类定义的注意事项 子类继承抽象类的注意事项 定义抽象类与抽象方法 注 ...
最新文章
- 安装Oracle11g先决条件检查失败
- flutter集成oc
- hdu3374最小表示法+KMP
- ssh(Spring+Spring mvc+hibernate)——Emp.hbm.xml
- Apache Ant 1.10.6发布–用于junitlauncher的fork模式以及新的jmod和链接任务
- mac 删除垃圾篓中的文件
- python tab和空格混用_Python编程常见十大错误,看完你自己都笑了!
- gstat | 空间插值(四)——克里金插值之协同克里金和交叉验证
- c语言 算日期,C语言 · 日期计算
- mysql是个单用户数据库_MySQL是一个支持单用户的数据库管理系统 答案:×
- 确定有限状态自动机(deterministic finite automaton --> DFA)
- _raw_writel, writel_relaxed 和 writel的区别
- zynq 的时钟频率
- 技嘉服务器主板按f1才能进系统,电脑开机要按F1或F2才能进入系统的解决方法
- 项目开发——课程表查询APP
- win10上VMware虚拟机设置固定IP地址
- 计算机技术英文缩写含义,电脑技术中常见的英文缩写含义
- 最短路 HDU - 2544 (最短路)
- Windows 如何配置 scratch 3.0 GUI
- 乐讯机器人精简版2016迎春版【隆重发布】