抽象类

抽象类定义

只约定类所具有的抽象行为,没有具体实现相应行为。

语法格式

abstract class 类名{
常量;
变量;
构造();
访问修饰符abstract 返回类型 方法名;//抽象方法
普通方法;
静态方法();
}

应用场景

1.不适合创建对象。

2.有些功能没有必要实现,有不同的子类实现。

3.每次使用的都是子类的对象。

4.为所有的子类提供了一个模板,所有的子类都是在此模板的基础之上添加和修改完善功能而创建出来的。

注意事项

1.不能创建对象。

2.必须由子类继承使用。

3.普通的子类必须实现抽象类中的所有抽象方法。(抽象子类除外)

4.构造方法不能是抽象的。

5.abstract不能和private、final、static一起使用。

6.抽象类中的抽象方法不是必须的,可以写,可以不写。

 abstract class TrafficTool1{
int count;
public abstract void run() ;//抽象方法
}
class Car2 extends TrafficTool1{
@Override
public void run() {
System.out.println("汽车在公路上行驶");
}
}
class Tube2 extends TrafficTool1{
public void run() {
System.out.println("地铁在 地下行驶");
}
}
public class TestTrafficTool1 {
public static void main(String[] args) {
Car2 c2 = new Car2();
c2.run();
Tube2 t2 = new Tube2();
t2.run(); } }

接口

定义接口

提供了一组规则。

访问修饰符 interface 接口名{//所有成员都是public
常量;//public static final
抽象方法;//public abstract
默认方法;//public default 类型 名(){实现}
静态方法;//public static 类型 名(){实现}
//不能被 实现类继承
//不能被 子接口继承
静态内部类型;//(public static 内部类,内部接口,内部枚举)
}

接口特点

1.接口不能创建对象。

2.由实现类来实现功能。

3.普通的实现类,必须实现接口中的所有抽象方法。(抽象实现类除外)

4.实现类可以实现多个接口的功能。

5.接口之间可以继承,而且可以多继承。

接口注意事项

1.静态方法不能被继承。静态方法用 接口名.静态方法名调用

2.实现多个接口方法名相同的处理

接口在开发中,提供了一组规则和规范,一旦发布了,就不要更改了。

解决问题:用default

 interface WebBank{
void webService();//网上支付功能
//public abstract void webService();
default void fd() {}
}
//实现类
class Jingdong implements WebBank{
@Override
public void webService() {
System.out.println("京东实现了支付功能");
}
public void show() {}
}
class Taobao implements WebBank{
public void webService() {
System.out.println("淘宝实现了支付功能");
}
}
public class TestWebBank {
public static void main(String[] args) {
WebBank web = new Jingdong();
web.webService();
web.fd();
// web.show();//屏蔽
/* Jingdong jd = new Jingdong();
jd.webService();
Taobao tb = new Taobao();
tb.webService();*/ } }

接口和抽象类的异同

相同

1.都不能创建对象

2.都需要用子类或实现类来继承或实现。

3.都可以包含抽象方法。

4.普通的子类或实现类需要实现所有的抽象方法(抽象的除外)。

不同

1.抽象类是个类,是个模板类,为子类提供模板,是个半成品。

2.接口是提供了一个功能,是一个规范。

3.抽象类 子类是单一继承。

4.实现类 可以实现多个接口。

5.接口之间可以多继承。

Day9 抽象类和接口的更多相关文章

  1. 抽象类 VS 接口

    引言 接口和抽象类是面向对象编程(OOP, Object Oriented programming)中两个绕不开的概念,二者相似而又有所不同.接下来,我们来了解二者的概念并比较它们的异同. 什么是抽象 ...

  2. java抽象类和接口

    面向对象设计过程中重要的一点是如何进行抽象,即把"问题空间"中的元素与"方案空间"中的元素建立理想的一对一的映射关系.抽象类和接口便是抽象过程中的产物.     ...

  3. php中抽象类与接口的概念以及区别

    php里面的接口类,抽象类到底有什么用呢? 刚接触php的时候,觉得这个东西没什么用,其实这些东西还是有一定的作用的,下面我就简单的说说. 1.php 接口类:interface 其实他们的作用很简单 ...

  4. Java 抽象类与接口

    接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是 Java 语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予 Java 强大的面向对象的能力.他们两者之间对 ...

  5. 浅谈我对C#中抽象类与接口的理解

    C#中的抽象类与接口有些相似,初学者很容易混淆,今天就让我来谈谈对二者的理解. 首先我们得明确二者的含义,分述如下: 如果一个类不与具体的事物相联系,而只是表达一种抽象的概念,仅仅是作为其派生类的一个 ...

  6. Atitit 深入理解抽象类与接口 attilax总结

    Atitit 深入理解抽象类与接口 attilax总结 1.1. 主要区别接口侧重于动作抽象..抽象类是属性名词抽象..1 1.2. 抽象层次类>>抽象类>>接口1 1.3. ...

  7. luogg_java学习_07_抽象类_接口_多态学习总结

    这篇博客总结了半天,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 , 抽象 一种专门用来做父类,被继承的. (模板) 格式: abs ...

  8. PHP中抽象类,接口定义

    这里先介绍接口,因为在我最近看的好几本php工具书中都没有提到抽象类. 本人也觉得,在理解了接口后抽象类也非常好理解. 例子代码随便写了一下.例子代码是很ok的,测试过了不会报错,懒得看代码的筒靴们看 ...

  9. 0026 Java学习笔记-面向对象-抽象类、接口

    抽象方法与抽象类 抽象方法用abstract修饰,没有方法体部分,连花括号都不能有: 抽象方法和抽象类都用abstract修饰 包含抽象方法的类一定是抽象类:但不包含抽象方法的类也可以是抽象类 不能创 ...

随机推荐

  1. Es创建索引、设置和修改Mapping

    Http接口操作示例如下: 1.创建索引: 2.删除索引: 3.创建mapping: 4.查看mapping:

  2. opencv3.2.0实现读取多张图片的方法(利用sprintf()函数)

    简介: 将连续的图片转换成视频时,首先需要把图片全部读入,然后再做相应处理,该程序利用sprintf()函数,实现连续图片的读入 /*********新建QT控制台程序,实现多张连续图片的读取**** ...

  3. Pwn With longjmp

    前言 这个是 seccon-ctf-quals-2016 的一个题,利用方式还是挺特殊的记录一下. 题目链接 http://t.cn/RnfeHLv 正文 首先看看程序的安全措施 haclh@ubun ...

  4. html单元格导出excel图形环境问题

     现象:报表页面端展现正常,点击导出excel,选择完是否分页后页面没有反应,后台润乾日志中错误信息: runqianReportLogger : [ERROR]  - Error: at com ...

  5. linux客户端打印报表时操作系统的配置

     报表打印是用applet方式操作的,所以客户端要有jre环境.如果客户端是windows系统的话,安装jre环境比较方便:如果客户端是linux系统的话,即使服务器端reportConfig.x ...

  6. Android横、竖屏幕动态切换(layout-land 和layout-port)

    下面是一个例子程序: 1.首先通过以下语句设置Activity为无标题和全屏模式: // 设置为无标题栏 requestWindowFeature(Window.FEATURE_NO_TITLE); ...

  7. redis介绍(2)简单安装

    我分两种方式讲解 window 下载地址:https://github.com/MSOpenTech/redis/releases. Redis 支持 32 位和 64 位.这个需要根据你系统平台的实 ...

  8. Windows 安装mkvirtualenv虚拟python环境

    pip install virtualenvwrapper-win mkvirtualenv --python=python.exe 新python虚拟环境名称 使用方法 所有的命令可使用:virtu ...

  9. Oracle EBS AR 更新客户组织层

    declare -- Local variables here i integer; g_module ) := 'TCA_V2_API'; lrec_org hz_party_v2pub.organ ...

  10. MySQL->>innodb_autoinc_lock_mode参数控制auto_increment 插入数据时相关锁的模式

    转自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15498/viewspace-2141640/ ---------------------------------- ...