一.抽象类

1.定义

抽象类指提供方法,但是未提供方法体(实现方法)的类,抽象类用来被子类继承,子类通过方法的重写实现抽象方法。

注:1)抽象类中不一定包含抽象类,它可能只是abstract修饰的类;包含抽象方法的类一定是抽象类。

2)抽象类一旦被继承,子类需要实现所有的抽象方法,否则子类也要用abstract修饰.

3)抽象类不能实例化,但是可以在创建抽象类的同时,提供抽象方法的实现。

4)抽象类可以拥有自己的成员变量及成员方法。

2.格式

抽象类:[public] + abstract +类名

抽象方法:[public] /protected +类型+方法名称();

注:abstract不能修饰私有方法,静态方法和构造方法。

3.理解

在面向对象的过程中,类可以描述对象,但是有些类并不提供具体的方法(足够的信息)来描述具体的对象。比如有对象new Animal(),对象是什么动物,怎么叫,什么样子,我们并不知道,需要在子类(Cat,Dog)中提供具体的数据。总的来说,抽象类是对事物的抽象。

4.实例

public abstract classAnimal {int i=0; //如果为静态变量则直接调用,非静态变量创建对象(实例化的同时要重写抽象方法)后调用。

abstract void shout(); //构造抽象方法

}public class Cat extendsAnimal{public void shout() { //子类重写抽抽象方法

System.out.println("猫叫:喵喵...");

}public static voidmain(String[] args) {

Animal a1= new Cat(); //抽象类在实例化的时候,引用指向子类,子类不是抽象类;不会报错;如果子类在上面不重写抽象方法,这里将会报错,即子类为抽象类。

a1.shout();

a1.i=2;

Animal a2= new Animal(){ //抽象类实例化的同时重写抽象方法。

voidshout() {

System.out.println("喵");

}

};

a2.shout();

a2.i=3;

}

}

二.接口

1.定义

接口可以说是一种更加彻底的抽象类,它是对行为特性进行抽象,它只有常量和抽象方法。

2.格式

2.1创建接口

interface + 接口名称{

常量:[public static final]+ 类型 + 常量名称=?; (需要给常量初始化)

抽象方法:[public abstract] + 方法名称();

}

2.2接口的使用

子类 + implements + 接口名称1,2,3..{}

注:一个子类可使用多个接口。

3.实例

以飞机为例,所有的飞机都有起飞,着陆功能:

1 abstract classPlane{2 abstract voidlaunch();3 abstract voidland();4 }5 //或者

6 interfacePlane{7 voidlaunch();8 voidland();9 }

然而一些飞机(战斗机Battleplane)具有开火(fire)功能,实现方法如下:

1.在抽象类Plane中添加开火功能:abstract void fire();或者在接口Plane中添加开火功能:void fire();

2.新建一个抽象类Fire并添加开火功能

1 abstract classFire{2 abstract voidfire();3

4 }

3.新建一个接口Fire冰添加开火功能

1 interfaceFire{2 voidfire();3

4 }

筛选:1.子类battleplane可以继承该抽象类或者实现该接口,但是其他子类(客机之类)不适用,舍弃;2.子类Battleplane不能同时继承两个父类,舍弃;3.子类Battleplane继承父类Plane,并且实现接口Fire,其他子类(客机之类的)可以继承该抽像类,没有开火功能,则不实现该接口。

具体代码如下:

1 public class Battleplane extendsPlane implenments Fire{2

3 public voidlaunch(){4 System.out.println("起飞“);

5 }6

7 public voidland(){8 System.out.println("着陆”);

9 }10

11 public voidfire(){12 System.out.println("开火“);

13 }14

15 public static voidmain(String args[]){16 Battleplane bp=newBattleplane();17 bp.launch();18 bp.land();19 bp.fire();20 }21 }

!!!

Java抽象类和接口使用_Java 抽象类和接口相关推荐

  1. java抽象类及其派生类_java抽象类

    本文指标: 1. 最基本的运用:掌握java类最简单,最核心的写法 2. 理论知识:语法角度,设计角度 3. 几种典型应用 最简单也是最核心的抽象类示例: 学习应该是一个循序渐进的过程,学java抽象 ...

  2. java类和抽象方法课件_java抽象类和抽象方法(转载)

    抽象类就是不能使用new方法进行实例化的类,即没有具体实例对象的类.抽象类有点类似"模板"的作用,目的是根据其格式来创建和修改新的类.对象不能由 抽象类直接创建,只可以通过抽象类派 ...

  3. java 接口重写_java如何实现接口中的重写

    普通类implements接口 1.普通方法,抽象方法都得重写: 2.默认方法可重写,也可不重写. 抽象类implements接口 在线视频教程分享:java教学视频 由抽象类来实现接口,则不必重写接 ...

  4. java 接口对象_Java面向对象之接口——interface

    Java面向对象之接口--interface 什么是接口 一般计算机中的接口分为硬件接口和软件接口. 硬件接口:是指两个硬件设备之间的连接方式,既包括物理上的接口,还包括逻辑上的数据传送协议. 软件接 ...

  5. java抽象问题出租车计费_java抽象类实现计算景区门票

    需要为一个景区实现计算景区门票的程序,已知成年人的门票价格是100元,儿童票打3折,老年票打5折.使用抽象类来为任意多张不同类型的票计算总价.其UML类图如下所示. 程序实现结果如下图所示: 要求:给 ...

  6. java抽象类的子类必须_JAVA——抽象类

    一.抽象类的概念 包含一个抽象方法的类就是抽象类,其本质是对多个普通类中相同的部分的抽象. 二.抽象类的特点 1.抽象方法和抽象类使用 abstract 修饰: 2.有一个抽象方法的类必须是抽象类: ...

  7. java面向对象接口实现_Java面向对象之接口

    接口(interface): 接口的地位等同于class,换句话说接口中的所有方法都是抽象方法.在声明接口中的方法时,可以使用abstract关键字,也可以不适用,通常情况下,都会省略掉abstrac ...

  8. java comparable接口作用_Java 中 Comparable 接口的意义和用法

    一, 为何需要实现Comparable接口 我们知道Collections类中包含很多对实现Collection接口的容器各种操作的静态方法. 当然, 其中最长用的莫过于排序了(Collections ...

  9. java支持接口吗_java – 支持专用接口方法

    此支持允许接口的非抽象方法在它们之间共享代码.私有方法可以是静态的或实例的. 接口的私有方法可以是抽象的还是默认的? 我可以问一个例子,"私有静态接口方法"在代码方面是否有用? 解 ...

最新文章

  1. 腾讯面试题:创建索引时,你会怎么考虑呢?(看完你就能和面试官谈人生了)
  2. eclipse中不能找到dubbo.xsd解决方法
  3. socket第三方库 AsyncSocket(GCDAsyncSocket)
  4. 在 Delphi 下使用 DirectSound (14): 测试镶边效果器 IDirectSoundFXFlanger8
  5. 计算机系统操作在线作业,电子科大《计算机操作系统》在线作业3
  6. Python之List和Tuple类型(入门3)
  7. ROS入门 TX2+Turtlebot+Kinect2.0配置记录
  8. poj1511 InvitationCards 最短路 Dijkstra堆优化
  9. CCF201909-3 字符画(100分)【文本处理】
  10. android恢复出厂设置的流程
  11. 史上最详细的宝塔部署java项目流程
  12. 关于自动量程万用表和自动档位万用表使用
  13. 最好的防御就是进攻 任正非
  14. frp代理工具流量分析
  15. 基于matlab的纸币面额面向识别方法设计
  16. 编译原理——语法制导翻译并产生中间代码(while,复合语句和过程调用语句的翻译)
  17. NI控件之 CWGraph使用(COM)
  18. Failed to convert a NumPy array to a Tensor (Unsupported object type numpy.int64).
  19. R语言入门教程知识 第二章 赋值代码与命名规则
  20. 一个了不起的非洲小伙子-威廉.坎宽巴

热门文章

  1. 深度学习 数码管_创新研发基于深度学习的可见光智能检测技术
  2. 爬虫—dy直播各个类别下直播数据
  3. 视觉SLAM十四讲CH10代码解析及课后习题详解
  4. SQL 查询语句 IIF()处理条件判断
  5. Mysql根据经纬度和距离检索符合条件的数据浅析
  6. 【业务架构】价值链分析的直接指南
  7. 【iOS】简单易用的折线图控件
  8. 【日常】FAB法则在产品设计的应用
  9. C++ 实现两线段是否相交、相交情况、若相交求出交点坐标
  10. 用Python做命令行地址簿