抽象类

抽象类定义

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

语法格式

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. The request sent by the client was syntactically incorrect.

    HTTP Status 400 - type Status report message description The request sent by the client was syntacti ...

  2. java设计模式-----15、适配器模式

    概念: Adapter模式也叫适配器模式,是构造型模式之一,通过Adapter模式可以改变已有类(或外部类)的接口形式. 举个例子:我们使用电脑,家里的电源是220V的,而我们的电脑是18V的,这时如 ...

  3. Mysql最左匹配原则实践(原创)

    mysql最左匹配原则 什么叫最左匹配原则 最左匹配原则的误区 实战 结论: 1 条件查询中条件顺序没有关系 2 在最左匹配原则中,有如下说明: 最左前缀匹配原则,非常重要的原则,mysql会一直向右 ...

  4. LINUX创建LVM、PV、VG、LV ORACLE服务器方案划分

    为裸盘分区 查看硬盘分区 fdisk -l 进入分区管理 fdisk /dev/sda 创建PV 创建PV pvcreate /dev/sda1 pvcreate /dev/sdb1 pvcreate ...

  5. Android CheckBox大小调整

    关键是: android:scaleX="0.5" <CheckBox android:id="@+id/checkBox1" android:layou ...

  6. Django From组件 fields widgets

    一.Form组件之字段 Field required=True, 是否允许为空 widget=None, HTML插件 label=None, 用于生成Label标签或显示内容 initial=Non ...

  7. python中的字符串编码问题——2.理解ASCII码、ANSI码、Unicode编码、UTF-8编码

    ASCII码:全名是American Standard Code for Information Interchange,ASCII码中,一个英文字母(不分大小写)占一个字节的空间,范围0x00~0x ...

  8. 精华阅读第 12 期 | 最新 App Store 审核指南与10大被拒理由?

    很多时候,我们对技术的追求是没有止境的,我们需要不断的学习,进步,再学习,再进步!本文系移动精英开发俱乐部的第12期文章推荐阅读整理,其中涉及到了 Android 数据库框架,架构设计中的循环引用,同 ...

  9. PMF:为何硅谷大神把它念奉为创业公司“唯一重要的东西”

    产品-市场匹配(Product-market fit,PMF)虽然是精益创业中最重要的概念之一,但也是最不明确的一个概念.2007年,马克?安德森在他的博客里创造了这个概念,并定义为:“在一个好的市场 ...

  10. 1.Junit test使用

    1.导入maven依赖 <dependency> <groupId>junit</groupId> <artifactId>junit</arti ...