第三十、Java面向对象之接口
一个类最多只能有一个直接的父类。但是有多个间接的父类。
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面向对象之接口相关推荐
- 学习大数据的第13天——Java面向对象(接口、分析参数返回值的类型不同时如何解决、包以及访问权限修饰符(public、protected、默认、private))
学习大数据的第13天--Java面向对象(接口.分析参数返回值的类型不同时如何解决.包以及访问权限修饰符(public.protected.默认.private)) 接口 接口的基本定义: 1.1.语 ...
- Java学习系列(十)Java面向对象之I/O流(上)
IO流 我们知道应用程序运行时数据是保存在内存中的,但由于内存中的数据不可持久保存(如断电或程序退出时数据会丢失),因此需要一种手段将数据写入硬盘或读入内存.面向IO流编程就是一种很好的选择.IO:I ...
- 20165301陈潭飞2017-2018-2 20165301 实验三《Java面向对象程序设计》实验报告
2017-2018-2 20165301 实验三<Java面向对象程序设计>实验报告 一.敏捷开发与XP实践-1 实验要求: 在IDEA中使用工具(Code->Reformate C ...
- 20155201 实验三《Java面向对象程序设计》实验报告
20155201 实验三<Java面向对象程序设计>实验报告 一.实验内容 XP基础 XP核心实践 相关工具 二.实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门 ...
- 三、Java 面向对象高级——数据结构、List、Set、Collection
day03 [List.Set.数据结构.Collections] 主要内容 数据结构 List集合 Set集合 Collections 教学目标 能够说出List集合特点 能够说出常见的数据结构 能 ...
- axi dma 寄存器配置_FPGA Xilinx Zynq 系列(三十二)AXI 接口
大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPGA技术江湖,在"闯荡江湖"."行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢. ...
- Java面向对象编程——接口
接口是个比抽象类更抽象的一个抽象类 上个文章讲解了抽象类是从多个类中抽象出来的模板,如果将这种抽象进行得更彻底,则可以提炼出一种更特殊的"抽象类"--接口(interface). ...
- Java -- 面向对象【接口】
Java接口是Java语言中存在的结构,有特定的语法和结构,Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现, ...
- Java面向对象基础接口和抽象的理解
第一,抽象类: 我们都知道,在面向对象的领域中,一切都是一个对象,所有的对象都是用类来描述的,但不是所有的类都是用对象来描述的.如果一个类没有足够的信息来描述一个特定的对象,并且需要其他特定的类来支持 ...
最新文章
- 2021语言与智能技术竞赛上线!百度飞桨提供平台算力支持
- 第二期分享 | WebSocket+MSE——HTML5直播技术解析
- leetcode 237. 删除链表中的节点(左神算法:一种怪异的节点删除方式、此方法存在的问题分析)
- python导入csv报错_Python Pandas read_csv报错
- P1943-LocalMaxima_NOI导刊2009提高(1)【数论】
- PHP array_pop()函数与示例
- According to a report from Bleeping Computer
- 算法眼中的世界是什么样子?他们用一些彩色方块画了出来
- Android安装后没有完成和打开按钮
- 计算机和机械交叉学科会议期刊,机器视觉相关的研究团队
- 学习 storm,整合 springboot
- 22计算机408考研—数据结构—线性表、栈、队列、数组
- rstp 小米网络摄像头_各主流摄像头的rtsp地址格式
- html页面中的快捷键设置
- 【附源码】计算机毕业设计java中小学在线考试系统设计与实现
- Git入门起步(超详细)
- 抖音上的战斗力测试软件,战斗力测试app
- 3个APP海外推广方式,不走寻常路
- flutter-Routers基础介绍
- 编程小白须知,阿里、百度、华为这些大厂都用什么编程语言?别说不知道!