JAVA笔记12-接口interface
1、概念:接口是抽象方法和常量值得定义的集合。本质上,接口是一种特殊的抽象类,这种抽象类只包含常量和方法的定义,而没有变量和方法的实现。
接口定义举例:
2、接口特性:
(1)接口可以多重实现;(接口可以继承接口,类可以实现接口,类可以继承类)
(2)接口中声明的属性(成员变量)默认是public static final的,也只能是public static final的;
这是为了修正C++中多继承容易出现问题(重复的成员变量)。
(3)接口中只能定义抽象方法,而且这些方法默认是public的,也只能是public的;
接口中的方法不用加abstruct,默认就是抽象方法,而且只能是抽象方法。
(4)接口可以继承其他的接口,并添加新的属性和抽象方法。
3、 (1)多个无关的类可以实现同一个接口,一个类可以实现多个无关的接口;
(2)与继承关系类似,接口与实现类之间存在多态性;
4、定义Java类的语法格式:
5、补充:实现Comparable接口(该接口只有一个compareTo方法),重写compareTo方法。写一个排序方法,能够比较所有类型的对象。
6、接口举例
例1:
public class TestInterface{
public static void main(String args[]){
Singer s1=new Student("le");//此处并非实例化接口,接口与抽象类一样是不可以实例化的
s1.sing();//student is singing
s1.sleep();//student is sleeping
Singer s2=new Teacher("steven");
s2.sing();//teacher is singing
s2.sleep();//teacher is sleeping
Painter p1=(Painter) s2;
p1.paint();//teacher is painting
p1.eat();//teacher is eating
}
}
interface Singer{
public void sing();
public void sleep();
} interface Painter{
public void paint();
public void eat();
} class Student implements Singer{
private String name;
Student(String name){
this.name=name;
}
public String getName(){
return name;
}
public void study(){
System.out.println("studying");
}
public void sing(){
System.out.println("student is singing");
}
public void sleep(){
System.out.println("student is sleeping");
}
}
class Teacher implements Singer,Painter{
private String name;
Teacher(String name){
this.name=name;
}
public String getName(){
return name;
}
public void teach(){
System.out.println("teaching");
}
public void sing(){
System.out.println("teacher is singing");
}
public void sleep(){
System.out.println("teacher is sleeping");
}
public void paint(){
System.out.println("teacher is painting");
}
public void eat(){
System.out.println("teacher is eating");
}
}
内存分析:对象中的“指向方法的指针”可以动态地根据指向该对象的引用类型调整所指向的方法。
例2:
JAVA笔记12-接口interface的更多相关文章
- JavaSE入门学习21:Java面向对象之接口(interface)(二)
一接口实现的多态 在上一篇博文:JavaSE入门学习20:Java面向对象之接口(interface)(一)中提到了接口的实现存在多态性,那么 这一篇主要就要分析接口实现的多态. 实例一 Test.j ...
- Java 基础 面向对象: 接口(interface )概念 以及接口之练习3 -定义一个接口用来实现两个对象的比较并 判断instanceof是否为同类
接口(interface )概念概念笔记 及测试代码: /** 面向对象: 接口(interface ) 是与类并行的一个概念: * 1.接口可以看成一个特殊的抽象类,它是常量与抽象方法的一个集合 * ...
- java中的接口interface
关于接口 接口描述了实现了它的类拥有什么功能.因为Java是强类型的,所以有些操作必须用接口去约束和标记.接口作为类的能力的证明,它表明了实现了接口的类能做什么. 类似与class,interface ...
- JavaSE入门学习20:Java面向对象之接口(interface)(一)
一Java接口 接口(英文:interface)是抽象方法和常量值的集合,在Java编程语言中是一个抽象类型,接口通常以interface来声 明.类是一种详细实现体.而接口定义了某一批类所须要遵守的 ...
- Java面向对象之接口interface 入门实例
一.基础概念 (一)接口可以简单的理解为,是一个特殊的抽象类,该抽象类中的方法都是抽象的. 接口中的成员有两种:1.全局常量 2.抽象方法 定义接口用关键字interface,接口中的成员都用固定的修 ...
- Thinking in Java——笔记(12)
Error Handling with Exceptions The ideal time to catch an error is at compile time, before you even ...
- JAVA笔记7__接口应用/Object类/简单工厂模式/静态代理模式/适配器模式
/** * 接口应用 */ public class Main { public static void main(String[] args) { Person p = new Person(&qu ...
- Java笔记12:Java对象排序
代码: import java.util.Arrays; import java.util.Comparator; class Person { private String name; privat ...
- java笔记12之面向对象初始
1 概述 类:是一组相关的属性和行为的集合.是一个抽象的概念. 对象:是该类事物的具体表现形式.具体存在的个体. (1)面向对象思想 面向对象是基于面向过程的编程思想. ...
随机推荐
- [转帖]全方位掌握OpenStack技术知识
全方位掌握OpenStack技术知识 http://www.itpub.net/2019/06/17/2206/ 架构师技术联盟的文章 相当好呢. 大家好,我是小枣君.最近几年,OpenStack这个 ...
- Oracle-DDL 1- 表管理
DDL-数据定义语句: 一.表管理 1.create 创建表-- 必须有创建表的权限和表空间-- 表名必须以字母开头,可以包含数字和符号,不能是系统关键字 /*create table 表名(列名1 ...
- Oracle 获取当前日期是月的第几周
函数FUNC_GET_WEEKOFMONTH: IW 是年的自然周: WW是年的第一天起开始算7天为一周 FUNCTION FUNC_GET_WEEKOFMONTH (V_PSD DATE) RETU ...
- HDU 2018 Cow Story DP
Basic DP Problem URL:https://vjudge.net/problem/HDU-2018 Describe: There is a cow that gives birth t ...
- mongodb 数据操作(1)
切换/创建数据库 use test 添加数据db.student.save({name:"J33ack",age:25}) 查看数据库show dbs 删除当前数据库 db.dro ...
- EJS学习(五)之EJS的CommonJs规范版本
EJS的CommonJs规范版本 ejs分为两个版本一个是CommonJs版本,另外一个是AMD规范的版本. 基础:html页面 安装:<script type="text/javas ...
- Qt表格导出图片
概述:qt中把某个控件导出保存为图片导出并不复杂,网上也有一堆方法.但是对于tableview中数据很多的情况下势必会出现滚动条,用传统的截屏抓图势会有滚动条,图片数据展示不全.在这我使用了一种折中方 ...
- JDBC2
1.JDBC连接池 public class JdbcTemplateDemo2 { //Junit单元测试,可以让方法独立执行 //1. 获取JDBCTemplate对象 private JdbcT ...
- 学习.NET中的AppDomain
学习.NET中的AppDomain 什么是AppDomain?AppDomain是一组程序集的逻辑容器,AppDomain是为了提供隔离而设计的.它提供了保护.配置和终止其中每一个应用程序的隔离 Ap ...
- 使用Ant打包工具
由于使用java,javac,jar等工具进行编译打包,即繁琐低效又容易出错,因此Ant出现了.Ant的出现就是专门为了打包编译java代码的,使用之前得稍微学一下.Ant的运行起来主要是依靠配置文件 ...