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)面向对象思想 面向对象是基于面向过程的编程思想. ...
随机推荐
- Microsoft Visual Studio 中工具箱不显示DevExpress控件的解决办法
我安装的是DevExpress15.2 1.找到安装目录D:\Program Files\DevExpress15.2\Components\Tools, 运行控制台 内容换成cmd 2.执行下面的命 ...
- 从零开始,SpreadJS新人学习笔记【第3周】
表单&函数 阔别多日, SpreadJS新人学习笔记,本周起正式回归!(在断更的这一个月中,我为大家先后录制了14期SpreadJS产品入门系列学习视频,希望帮助那些正在学习和使用 Sprea ...
- 从零开始,SpreadJS 新人学习笔记
Hello,大家好,我是Fiona,从事前端开发工作,我十分热爱我的工作和一直默默栽培我的老板(这段请加粗). 前不久,接到老板的安排: 说实话,接到这个需求,我整个人的状态是这样的: 但是,我不能辜 ...
- 小记---------CDH版大数据组件--clouderManager UI界面
启动 /opt/cm-5.14.0/etc/init.d/clouder-scm-server start /opt/cm-5.14.0/etc/init.d/clouder-scm-agent st ...
- C++11智能指针原理和实现
一.智能指针起因 在C++中,动态内存的管理是由程序员自己申请和释放的,用一对运算符完成:new和delete. new:在动态内存中为对象分配一块空间并返回一个指向该对象的指针: delete:指向 ...
- Java switch case 语句
switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支. 语法 switch(expression){ case value : //语句 break; //可选 ca ...
- composer命令介绍之install和update及其区别
composer 是 php 的一个依赖管理工具.它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们. 然而,对于如何『安装他们』,新手可能并不清楚.网上的答案有的说 composer in ...
- python-day31(正式学习)
一.单机架构 应用领域: 植物大战僵尸 office 二.CS架构 应用领域: QQ 大型网络游戏 计算机发展初期用户去取数据,直接就去主机拿,从这里开始就分出了客户端和服务端. 客户端:用户安装的软 ...
- 小白学习tornado框架第一站-环境设置
首先建立一个虚拟环境 mkvirtualenv -p /usr/bin/python3 tornado_1 安装tornado框架 pip install tornado pycham中建立同步 创 ...
- Codeforces 1196F. K-th Path
传送门 发现到 $K$ 不大,考虑有什么和 $K$ 有关的结论 发现答案似乎只会经过前 $K$ 小的边,如果边权第 $K$ 小的边有多条那么可以任意取 证明挺显然的吧,首先如果走了边权排名大于 $K$ ...