当前位置: 首页 > news >正文

java基础-接口

接口:是一种规则,接口不表示事物,它更侧重于行为,是对行为的抽象

接口的定义:接口是使用关键字interface来定义的

public interface 接口名{}

接口不能实例化

接口和类之间是实现关系,通过implements来表示

public class 类名 implements 接口名{}

接口的子类(实现类)

1、要么重写接口里面全部的抽象方法(通常是采用这种方式)

2、要么也是抽象类

注意:接口和类的实现关系,可以是单实现也可以是多实现

public class 类名 implements 接口1,接口2{}

接口中成员的特点:

1、成员变量

只能是常量,默认修饰符:public static final

2、接口中是没有构造方法的

3、成员方法:JDK7以前,接口中只能写抽象方法,默认修饰符public abstract

接口和类之间的关系:

1、类和类之间是继承关系,并且只能是单继承,不能是多继承的关系,但是可以是多层继承

2、接口和类之间的关系:实现关系,可以是单实现,也可以是多实现,还可以在继承一个类的同事实现多个接口

3、接口和接口之间的关系,是继承关系,可以单继承也可以多继承

细节:如果实现类是实现了最下面的子接口的话,需要重写全部的抽象方法

小练习:

package com.jdL.day15classwork.question1;public class Person {private String name;private int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}
package com.jdL.day15classwork.question1;import com.jdL.day15classwork.Swim;public abstract class Player extends Person {public Player() {}public Player(String name, int age) {super(name, age);}//学习的方法public abstract void study();
}
package com.jdL.day15classwork.question1;public abstract class coach extends Person {public coach() {}public coach(String name, int age) {super(name, age);}//教学public abstract void teach();
}
package com.jdL.day15classwork.question1;public class pingpangPlayer extends Player implements learnEnglish {public pingpangPlayer() {}public pingpangPlayer(String name, int age) {super(name, age);}@Overridepublic void study() {System.out.println("学习打乒乓球");}@Overridepublic void learnEnglish() {System.out.println("学英语");}
}
package com.jdL.day15classwork.question1;public class baseketballPlayer extends Player{public baseketballPlayer() {}public baseketballPlayer(String name, int age) {super(name, age);}@Overridepublic void study() {System.out.println("学习打篮球");}
}
package com.jdL.day15classwork.question1;public class pingpangCoach extends coach implements learnEnglish {public pingpangCoach() {}public pingpangCoach(String name, int age) {super(name, age);}@Overridepublic void teach() {System.out.println("教学乒乓球");}@Overridepublic void learnEnglish() {System.out.println("学英语");}
}
package com.jdL.day15classwork.question1;public class baseketBallCoach extends coach{public baseketBallCoach() {}public baseketBallCoach(String name, int age) {super(name, age);}@Overridepublic void teach() {System.out.println("教学篮球");}
}
package com.jdL.day15classwork.question1;public interface learnEnglish {public abstract void learnEnglish ();
}
package com.jdL.day15classwork.question1;public class questionTest {public static void main(String[] args) {pingpangCoach coach = new pingpangCoach("张三",12);coach.learnEnglish();coach.teach();pingpangPlayer pingpangPlayer = new pingpangPlayer("张三壹",5);pingpangPlayer.learnEnglish();pingpangPlayer.study();baseketBallCoach coach2 = new baseketBallCoach("李四",18);coach2.teach();baseketballPlayer baseketballPlayer=new baseketballPlayer("李四贰",20);baseketballPlayer.study();}
}

接口扩展:

1、jdk8开始接口中新增的方法:

允许在接口中定义默认方法,需要使用默认关键字default修饰

作用:解决接口升级的问题

接口中默认方法的注意事项:

1、默认方法不是抽象方法,所以不会被强制重写,但是如果被重写,实现类重写的时候去掉default关键字

2、public可以省略,但是default不可以省略

3、如果实现了多个接口,多个接口中存在相同名字的默认方法,子类就必须对该方法进行重写

允许在接口中定义新增静态方法,需要用static修饰

比如:public static void show(){}

接口中静态方法的注意事项:

1、静态方法只能通过接口名调用,不能通过实现类或者对象名调用

2、public可以省略,但是static不可以省略

3、静态方法是不需要重写的

JDK9中新增的私有方法

私有方法通常是把接口中相同的代码抽取出来,供接口中默认方法调用的

如果上面不是默认方法而是静态方法,那么私有方法也得是静态的

小结:

接口的应用:

http://www.dtcms.com/a/611570.html

相关文章:

  • 数据库网站 模板800元做网站
  • HashMap扩容机制深度解析:从源码到实战的完整指南
  • 网站建设与管理中专专业怎么邀约客户做网站
  • 公司网站推广如何做网站建设外地便宜
  • 必要是什么网站湖南建设工程招标网
  • seo是什么品牌seo代运营公司
  • 大专网站建设资料南昌网站建设培训班
  • 助力V2G,米尔SECC GreenPHY实战开发
  • 湖北洪湖市建设局网站个人博客响应式模板
  • 龙岩建设局网站声明网站搜索引擎优化主要方法
  • 联想网站建设与分析网络公司项目
  • 有什么网站做头像wordpress博客注册
  • 和15岁女儿做很舒服网站浏览器打开网站
  • 如何微信做演讲视频网站wordpress同步到微信
  • 【代码审计】迅睿CMS V4.6.2 Phar反序列化 RCE
  • 网站定制设计服务需要使用的技术三好街网站建设与维护
  • 哪些指纹浏览器支持模拟SSL指纹
  • 宜春做网站哪里好惠州网站建设领头
  • 【电机控制】基于STM32F103C8T6的二轮平衡车设计——LQR线性二次线控制器(算法篇)
  • BuildingAI 控制台智能体菜单和页面技术架构
  • 保定网站制作系统陕西省网站开发
  • 如何在跨部门沟通失误后进行协调与澄清
  • VS2010 C语言编译器使用教程 | 如何高效配置和优化C语言编译环境
  • 常州网站建设要多少钱濮阳免费网站建设
  • 学了lamp做网站就足够了吗无忧中英繁企业网站系统 完整
  • ubuntu:beyond compare 4 This license key has been revoked 解决办法
  • 基于OSip协议栈的GB28181视频平台--jrtp传输过程中作为接收方不发送rtcp包问题处理
  • java加密启动报错
  • SpringAOP、连接点、通知类型、通知顺序、切入点表达式
  • 平面设计师参考网站开发公司总经理竞聘报告