学习java接口知识
学习java接口知识
//一个类最多只能有一个直接的父类。但是有多个间接的父类。 java是单继承。
class ye_01{
String name;
}
class fu_01 extends ye_01{}
class zi_01 extends fu_01{}
public class Interface {
public static void main(String[] args) {
// TODO Auto-generated method stub
zi_01 zi= new zi_01();
zi.name="bebe";
System.out.println(zi.name);
}
}

以上问题和java单继承相违背,那么就需要用接口来解决。
接口:拓展功能的。
接口的定义格式:
interface 接口名{
}
实现接口的格式:
class 类名 implements 接口名{
}
如下代码:
interface A { // 接口A,
// 成员变量
public static final int i = 10;
// 成员函数
public void print();
}
public class Interface_02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Interface_02 interface_02 = new Interface_02();
interface_02.print();
}
// 实现接口中的方法
public void print() {
System.out.println("这个是接口中的print方法...");
}
}
接口要注意的事项 :
1. 接口是一个特殊的类。
2. 接口的成员变量默认的修饰符为: public static final 。那么也就是说接口中的成员变量都是常量。
3. 接口中 的方法都是抽象的方法,默认的修饰符为: public abstract。
4. 接口不能创建对象,使用implements引用。
5. 接口是没有构造方法的,因为接口中的变量已经初始化了,没有必要有构造方法。
6. 接口是给类去实现使用的,非抽象类实现一个接口的时候,必须要把接口中所有方法全部实现。
然后我们看看怎么解决带橡皮的铅笔的问题:
//普通的铅笔类
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 Demo8
{
public static void main(String[] args)
{
//System.out.println("Hello World!");
PencilWithEraser p = new PencilWithEraser("2B铅笔");
p.write();
p.remove();
}
}
接口的作用:
1. 程序的解耦。 (低耦合)--接口最重要的优势
2. 定义约束规范。(项目组长和项目组长的责任)--次重要
3. 拓展功能。--最基本的
例如开发一个网站:
每个模块都会有增、删、查、改;
每个项目都需要后期的维护(不断优化代码、优化功能);【社会招聘-2天的适应期就开始干活了】
看网站代码的技巧:只看一个模块即可,因为大项目一般大家用的都是共同模块。

/*
* 需求:在现实生活中有部分同学在学校期间只会学习,但是有部分学生除了学习外还会赚钱。
* interface (定义接口)
* implements (实现接口)
*
* */
//普通的学生类
class Student{
String name;
public Student(String name){
this.name = name;
}
public void study(yunshenggw.cn/){
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+"好好挣钱,然后交学费!");
}
}
public class Interface_03 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Student s = new Student("李金华");
s.study();
//s.makeMoney();
MoneyStudent m = new MoneyStudent("孙双双");
m.study();
m.makeMoney();
}
}
类与接口之间的关系:实现的关系
package test_01;
/*
类与接口之间关系: 实现关系。
类与接口要注意的事项:
1. 非抽象类实现一个接口时,必须要把接口中所有方法全部实现。
2. 抽象类实现一个接口时,可以实现也可以不实现接口中的 方法。
3. 一个类可以实现多个接口 。
疑问: java为什么不支持多继承,而支持了多实现呢?
class A{
public void print(www.tianjiuyule178.com ){
System.out.println("AAAAAA");
}
}
class B{
public void print(baihuiyulegw.com){
System.out.println("BBBBBB");
}
}
class C extends A ,B{
}
new C().print(); //调用之后就会很尴尬,因为有冲突
答案: 接口是调用自己实现的那一个就可以,不存在冲突。而继承是使用父类的方法,可能会发生冲突;
接口与接口之间关系: 继承关系。
接口与接口之间要注意事项:一个接口是可以继承多个接口的。
*/
interface Ab{
public void print();
}
interface Ac extends Ab{ //Ac继承了Ab
public void getArea(www.yunsengyule.com);
}
//abstract class ANimal implements Ab,Ac{
// public void print(){
// System.out.println(" 实现 Ab 接口");
// }
// public void getArea(){
// System.out.println(" 实现 Ac 接口");
// }
//
//}
public class Interface_04 implements Ac{
public static void main(String[] args) {
// TODO Auto-generated method stub
Interface_04 interface_04= new Interface_04();
interface_04.getArea();
interface_04.print();
}
public void print(www.gouyiflb.cn){
System.out.println(" 实现 Ab 接口");
}
public void getArea(www.yscylept.com){
System.out.println(" 实现 Ac 接口");
}
学习java接口知识的更多相关文章
- 学习Java的知识体系路线(详细完整版,附图加目录)
将网上的Java学习路线图进行归纳囊括,方便以后学习时弥补自身所欠缺的知识点,也算是给自己一个明确的学习方向.至于第一阶段,即JavaSE的基础,这里不给出. 第二阶段 技术名称 技术内容 数据库技术 ...
- AJPFX学习Java函数知识总结
函 数:为了提高代码的复用性,可以将其定义成一个单独的功能,该功能的体现就是java中的函数.函数就是体现之一. java中的函数的定义格式: 修饰符 返回值类型 函数名(参数类型 形 ...
- Java底层知识学习:Bytecode and JMM
最近在跟着耗子哥的程序员练级指南学习Java底层知识,结合<深入理解Java虚拟机>这本书在看,写笔记,看资料,成长中…… 目前看完了第二章JMM和各内存区OOM的情况 一篇图文并茂介绍字 ...
- Java基础知识(壹)
写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
- 如何学习java?Java基础知识点分享
面对未知的行业,人们的第一反应应该是:拒绝踏入.因为学习真的是一个痛苦的过程.想要真正了解一个行业,熟知一个行业,并熟练掌握某一技术,是真的需要时间和精力的.在学习Java基础知识期间,千锋小编疯狂为 ...
- java基础知识回顾之---java String final类普通方法
辞职了,最近一段时间在找工作,把在大二的时候学习java基础知识回顾下,拿出来跟大家分享,如果有问题,欢迎大家的指正. /* * 按照面向对象的思想对字符串进行功能分类. * ...
- 如何高效的学习Java开发
IT 行业的变化快是众人皆知的,需要持续去学习新的知识内容.但是,往往我们工作之后,经常发现学习的东西很少了,学习效率非常低,感觉自己到了一个瓶颈期,久而久之,就演变成『一年工作经验,重复去用十年』的 ...
- 振鹏学习Java的第二天!
一.今日收获 1.了解了eclipse的具体使用方法. 2.学习了Java程序设计完全手册的第一章内容,明白了相关知识. 3.通过看哔哩哔哩的java的教程视频了解了Dos命令及java的变量和常量. ...
- 学习android学习必备的java基础知识--四大内部类
学习android必备的java基础知识--四大内部类 今天学习android课程,因为我的主专业是JAVA,但是兴趣班却有这其他专业的同学,学习android 需要具备一些java的基础知识,因此就 ...
随机推荐
- c#用winform开发一个简易双色球项目
开始画面 抽奖中: 抽奖结果: 需要一个随机数Random的帮助类,让随机数唯一性 public class RandomHelper { public int GetNum(int min, int ...
- .NET Core和.NET Standard有什么不同
近日,微软发布了.NET Core 2.0,但是开发人员中间仍然存在一些疑惑,就是.NET Core..NET Standard.Xamarin和.NET Framework有什么不同. .N ...
- InnoSetup 以命令行自动编译打包
本章介绍,在新建Innosetup的编译脚本iss文件后,在不运行Innosetup软件的基础上,以bat自动编译运行打包. 一.添加Innosetup软件包 下载InnoSetup软件包并解压到bu ...
- vue 使用定时器setInterval
来自:https://www.jianshu.com/p/180957762852 侵删 beforeMount() { //车辆进出设置定时器,每3秒刷新一次 var self = this; cl ...
- 小程序应用的Python服务器部署高配,依然是腾讯云秒杀阿里云!
上一篇文章,“小程序创业最低配置部署,腾讯云折扣秒杀阿里云!”介绍了小程序项目启动时的最低配置服务器选择,但当项目良好发展时,还是要把服务器配置调整到标准水平,承受住日益增长的流量访问. 随着Pyth ...
- 简单的shell命令
grep echo 重定向与管道 tr 特殊文件:/dev/null,/dev/tty 基本命令查找 访问shell脚本的参数 简单的执行跟踪: set -x set +x
- wav格式文件、pcm数据
wav格式文件是常见的录音文件,是声音波形文件格式之一,wav 文件由文件头和数据体两部分组成. 文件头是我们在做录音保存到文件的时候,要存储的文件的说明信息,播放器要通过文件头的相关信息去读取数据播 ...
- IDEA XML注释与取消注释快捷键
IntelliJ IDEA和eclipse中编辑Java文件时,注释和取消注释的快捷键都是: "CTRL + / " 编辑xml文件时, 注释:CTRL + SHIFT + / 取 ...
- 自定义AXI总线形式SPI接口IP核,点亮OLED
一.前言 最近花费很多精力在算法仿真和实现上,外设接口的调试略有生疏.本文以FPGA控制OLED中的SPI接口为例,重新夯实下基础.重点内容为SPI时序的RTL设计以及AXI-Lite总线分析.当然做 ...
- redis报错:java.net.SocketException: Broken pipe (Write failed); nested exception is redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketException: Broken pipe (Write failed)
最近写了一个服务通过springboot构建,里面使用了redis作为缓存,发布到服务器运行成功,但是有时候会报redis的错误:org.springframework.data.redis.Redi ...