抽象类

抽象类定义

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

语法格式

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. VisualVM监控远程阿里云主机

    一.前言 使用VisualVM监控远程主机,主要是要在远程主机上部署JMX服务和jstat服务,jstat服务的部署花了我半天的时间,而且,网上的资基本都是缺胳膊少腿的,没有一篇是一个整体(行得通的) ...

  2. .NET异常处理的动作策略(Action Policy)

    SQL Server 2008基于策略的管理,基于策略的管理(Policy Based Management),使DBA们可以制定管理策略,并将这些策略应用到服务器.数据库以及数据环境中的其他对象上去 ...

  3. Spring MVC入门(一)—— SpringMVC的执行流程与常用注解

    一.什么是SpringMVC SpringMVC就是类似于Struts2的mvc框架,属于SpringFrameWork的后续产品.在模型层中与视图层的交互部分. springMVC执行流程: 二.常 ...

  4. yii 修改模块使用的布局文件

    方法一:yii模块默认使用系统当前的主题布局文件,如果在主配置文件中配置了主题比如: 'theme'=>'mythm', 那么yii的模块就使用 protected/themes/mythm/v ...

  5. centos 快速安装wordpress

    1.两种方式得到Wordpress 首先你可以去wordpress官方网站看下最新的wordpress的下载地址多少.比如wordpress 3.9.1的下载地址是: http://cn.wordpr ...

  6. Spring Boot—14JdbcTemplate

    pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  7. docker实战 (1) 关于docker的安装

    docker定义: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制 ...

  8. 【翻译&转载】shader的导数函数介绍

    原文链接:http://www.aclockworkberry.com/shader-derivative-functions/ 他人的翻译:http://blog.sina.com.cn/s/blo ...

  9. spring boot(11)-druid监控

    druid druid是和tomcat jdbc一样优秀的连接池,出自阿里巴巴.关于druid连接池参数,参考 https://github.com/alibaba/druid/wiki/DruidD ...

  10. 树莓派raspberry Pi2 介绍

    Compared to the Raspberry Pi 1 it has: A 900MHz quad-core ARM Cortex-A7 CPU 1GB RAM Like the (Pi 1) ...