一个类最多只能有一个直接的父类。但是有多个间接的父类。

java是单继承。

class Ye{String name;
}class Fu extends Ye{}//
class  Zi extends Fu{}class MyClass
{public static void main(String[] args) {// System.out.println("Hello World!");Zi zi =new Zi();zi.name = "葫芦娃";}
}

接口:

接口(interface):usb接口,主要是使用来拓展笔记本的功能,那么在java中的接口主要是使用来拓展定义类的功能,可以弥补java中单继承的缺点。

接口的定义格式:

interface 接口名{
      属性;

抽象方法;
}

接口要注意的事项 :

1. 接口是一个特殊的类。
2. 接口的成员变量默认的修饰符为: public static final 。那么也就是说接口中的成员变量都是常量。
3. 接口中 的方法都是抽象的方法,默认的修饰符为: public abstract。
4. 接口不能创建对象。
5. 接口是没有构造方法的。
6. 接口是给类去实现使用的,非抽象类实现一个接口的时候,必须要把接口中所有方法全部实现。

实现接口的格式:

class  类名 implements 接口名{

}

interface A{//成员变量public static final int i=10;//成员函数public void print();
}class MyClass implements A{ // MyClass就实现了A接口public static void main(String[] args) {MyClass d = new MyClass();d.print();}//实现接口中的方法public void print(){System.out.println("这个是接口中的print方法...");}
}

接口的作用:

1. 程序的解耦。  (低耦合)

2. 定义约束规范。

3. 拓展功能。

//普通的铅笔类
class Pencil{String name;public Pencil(String name){this.name = name;}public void write(){System.out.println(name+"沙沙的写...");}
}//橡皮接口
interface Eraser{public void remove();
}//带橡皮的铅笔
class PencilWithEraser extends Pencil implements Eraser {public PencilWithEraser(String name){super(name);}public void remove(){System.out.println("涂改,涂改....");}
}class MyClass
{public static void main(String[] args) {PencilWithEraser p = new PencilWithEraser("2B铅笔");p.write();p.remove();}
}

注意:可以通过javap命令查看.

1、接口中的所有属性 默认的修饰符是  public static final。

2、接口中的所有方法 默认的修饰符是  public abstract。

疑惑:干嘛不在pencilWithEraser添加remove功能函数,而要通过接口?

需求:在现实生活中有部分同学在学校期间只会学习,但是有部分学生除了学习外还会赚钱。

interface (定义接口)

implements (实现接口)

分析:

普通的学生类

接口

会挣钱的学生

//普通的学生类
class Student{String name;public Student(String name){this.name = name;}public void study(){System.out.println(name+"好好学习");}
}//挣钱是学生拓展的功能---定义在接口上
interface Money{public void makeMoney();
}//会挣钱的学生
class MoneyStudent extends Student implements Money{public MoneyStudent(String name){super(name);}public void makeMoney(){System.out.println(name+"好好挣钱,然后...!");}}class MyClass
{public static void main(String[] args) {Student s = new Student("李金华");s.study();//s.makeMoney();MoneyStudent m = new MoneyStudent("孙双双");m.study();m.makeMoney();}}

接口的特点

1.   类实现接口可以通过implements实现,实现接口的时候必须把接口中的所有方法实现,一个类可以实现多个接口。

2.   接口中定义的所有的属性默认是public static final的,即静态常量既然是常量,那么定义的时候必须赋值。

3.   接口中定义的方法不能有方法体。接口中定义的方法默认添加public abstract

4.   有抽象函数的不一定是抽象类,也可以是接口类。

5.   由于接口中的方法默认都是抽象的,所以不能被实例化。

6.   对于接口而言,可以使用子类来实现接口中未被实现的功能函数。

7.   如果实现类中要访问接口中的成员,不能使用super关键字。因为两者之间没有显示的继承关系,况且接口中的成员成员属性是静态的。可以使用接口名直接访问。

8.   接口没有构造方法。

interface Eraser {public static final String color = "白色";public abstract void clean();
}
class Pencil implements Eraser {String name;Pencil() {}Pencil(String name) {this.name = name;}void write() {System.out.println("写字");}@Overridepublic void clean() {System.out.println("涂改...");}
}

分析:

原本铅笔没有涂改功能的,但是一旦实现了Eraser接口做了实现,那么就具备了涂改功能,那么接口的作用则是拓展功能。

接口与类、接口之间的关系

1. 大家之前都知道类与类之间的关系继承,那么接口与类之间又是怎样子的关系呢?

    接口与类之间是实现关系

2. 非抽象类实现接口时,必须把接口里面的所有方法实现。

3. 抽象类实现一个接口时,可以实现也可以不实现接口中的 方法。

3. 类实现接口用关键字implements,类与接口之间是可以多实现的(即一个类可以实现多个接口)。

   疑问: java为什么不支持多继承,而支持了多实现呢?

class A{ public void print(){System.out.println("AAAAAA");}
}class B{public void print(){System.out.println("BBBBBB");}
}class C extends A ,B{}new C().print(); //这个print方法到底是父类A还是B的方法呢???

接口与接口之间关系: 继承关系。

接口与接口之间要注意事项:

1. 一个接口是可以继承多个接口的。

interface A{public void print();
}interface C{public void getArea();
}interface B extends A,C{ // B接口继承A、C接口public void test();
}

第三十、Java面向对象之接口相关推荐

  1. 学习大数据的第13天——Java面向对象(接口、分析参数返回值的类型不同时如何解决、包以及访问权限修饰符(public、protected、默认、private))

    学习大数据的第13天--Java面向对象(接口.分析参数返回值的类型不同时如何解决.包以及访问权限修饰符(public.protected.默认.private)) 接口 接口的基本定义: 1.1.语 ...

  2. Java学习系列(十)Java面向对象之I/O流(上)

    IO流 我们知道应用程序运行时数据是保存在内存中的,但由于内存中的数据不可持久保存(如断电或程序退出时数据会丢失),因此需要一种手段将数据写入硬盘或读入内存.面向IO流编程就是一种很好的选择.IO:I ...

  3. 20165301陈潭飞2017-2018-2 20165301 实验三《Java面向对象程序设计》实验报告

    2017-2018-2 20165301 实验三<Java面向对象程序设计>实验报告 一.敏捷开发与XP实践-1 实验要求: 在IDEA中使用工具(Code->Reformate C ...

  4. 20155201 实验三《Java面向对象程序设计》实验报告

    20155201 实验三<Java面向对象程序设计>实验报告 一.实验内容 XP基础 XP核心实践 相关工具 二.实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门 ...

  5. 三、Java 面向对象高级——数据结构、List、Set、Collection

    day03 [List.Set.数据结构.Collections] 主要内容 数据结构 List集合 Set集合 Collections 教学目标 能够说出List集合特点 能够说出常见的数据结构 能 ...

  6. axi dma 寄存器配置_FPGA Xilinx Zynq 系列(三十二)AXI 接口

    大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPGA技术江湖,在"闯荡江湖"."行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢. ...

  7. Java面向对象编程——接口

     接口是个比抽象类更抽象的一个抽象类 上个文章讲解了抽象类是从多个类中抽象出来的模板,如果将这种抽象进行得更彻底,则可以提炼出一种更特殊的"抽象类"--接口(interface). ...

  8. Java -- 面向对象【接口】

    Java接口是Java语言中存在的结构,有特定的语法和结构,Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现, ...

  9. Java面向对象基础接口和抽象的理解

    第一,抽象类: 我们都知道,在面向对象的领域中,一切都是一个对象,所有的对象都是用类来描述的,但不是所有的类都是用对象来描述的.如果一个类没有足够的信息来描述一个特定的对象,并且需要其他特定的类来支持 ...

最新文章

  1. 2021语言与智能技术竞赛上线!百度飞桨提供平台算力支持
  2. 第二期分享 | WebSocket+MSE——HTML5直播技术解析
  3. leetcode 237. 删除链表中的节点(左神算法:一种怪异的节点删除方式、此方法存在的问题分析)
  4. python导入csv报错_Python Pandas read_csv报错
  5. P1943-LocalMaxima_NOI导刊2009提高(1)【数论】
  6. PHP array_pop()函数与示例
  7. According to a report from Bleeping Computer
  8. 算法眼中的世界是什么样子?他们用一些彩色方块画了出来
  9. Android安装后没有完成和打开按钮
  10. 计算机和机械交叉学科会议期刊,机器视觉相关的研究团队
  11. 学习 storm,整合 springboot
  12. 22计算机408考研—数据结构—线性表、栈、队列、数组
  13. rstp 小米网络摄像头_各主流摄像头的rtsp地址格式
  14. html页面中的快捷键设置
  15. 【附源码】计算机毕业设计java中小学在线考试系统设计与实现
  16. Git入门起步(超详细)
  17. 抖音上的战斗力测试软件,战斗力测试app
  18. 3个APP海外推广方式,不走寻常路
  19. flutter-Routers基础介绍
  20. 编程小白须知,阿里、百度、华为这些大厂都用什么编程语言?别说不知道!

热门文章

  1. 【定金膨胀】2018天猫聚划算99大促欢聚盛典付尾款时间
  2. 背篼苏--L11工程模板
  3. 东北林业大学计算机学院复试题,2016年东北林业大学信息与计算机工程学院数计算机组成原理考研复试题库...
  4. 黑马培训 python
  5. linux教程redhat,RedHat Linux操作系统菜鸟成长必看
  6. 静电放电抗扰度测试方案
  7. 51单片机的计算器设计
  8. 51nod 3144 超级购物
  9. wps两列数据分别作为xy轴_【python实战】用KNN算法实现数据分类和数据预测
  10. 金山开源安全卫士全套代码编译指南–湘勇整理版