[Java 基础]接口
抽象类和抽象方法
abstract void f();
抽象类
包含抽象方法的类叫抽象类。
abstract class Sample {
private int param1;
abstract void f1();
void f2() {}
}
1、如果一个类包含有抽象方法,则必须限定为抽象类,否则编译器会报错。
2、抽象类不能实例化,否则编译器会报错。
java中,接口是以 interface 来修饰的。
接口可以被视为一个比“抽象类”更加抽象的类。
实现接口
一个类遵循某个特定或一组接口,必须使用 implements 关键字。
interface Fly {
void fly();
}
class Bird implements Fly {
@Override
public void fly() {
System.out.println("展翅飞翔");
}
}
注:接口中的方法必须是 public 类型,可以不显示地指定。但是如果指定为其他类型,编译器会报错。
扩展接口
玩过游戏的朋友们,肯定熟悉这个模式。
一名战士需要具备战斗能力。一名骑士不仅需要具备战斗能力,也需要具备骑术。
更进阶的圣骑士则还需要具备法师一般的魔法能力。这个关系可以抽象成以下代码:
interface Warrior {
void fight();
}
interface Knight extends Warrior {
void riding();
}
interface Enchanter {
void magic();
}
// Paladin类实现多个接口,需要包含这些接口的所有方法
class Paladin implements Knight, Enchanter {
public void fight() {}
public void riding() {}
public void magic() {}
}
多重继承
请考虑如下图的情况,一名在职研究生既是职工,也是学生,也是研究生。如果我们要在代码中实现这个继承关系,该如何去做?
C++中支持多重继承,但是JAVA中不支持多重继承,以下方式是错误的。一个类不能扩展多个类。
class Person {};
class Student extends Person {};
class Postgraduate extends Student {};
class Employee extends Person {};
class OnJobPostgraduate extends Postgraduate, Employee {};
JAVA中虽然不支持多重继承,但是可以通过接口实现类似的行为。一个类可以实现多个接口。
interface Person {};
interface Student extends Person {};
interface Postgraduate extends Student {};
interface Employee extends Person {};
class OnJobPostgraduate implements Postgraduate, Employee {};
[Java 基础]接口的更多相关文章
- Java 基础 接口和多态
接口 接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成.这样将功能的 ...
- Java基础接口和抽象类区别(二)
抽象类 在了解抽象类之前,先来了解一下抽象方法.抽象方法是一种特殊的方法:它只有声明,而没有具体的实现.抽象方法的声明格式为: 抽象方法必须用abstract关键字进行修饰.如果一个类含有抽象方法,则 ...
- java基础-接口
浏览以下内容前,请点击并阅读 声明 接口是java语言中的一个引用类型,和类一样,接口可以包含常量,方法签名,默认方法,静态方法和嵌套类型.含有方法主体的只有其中的默认方法和静态方法.接口不能被实例化 ...
- Java基础-接口中国特色社会主义的体制中有这样的现象:地方省政府要坚持党的领导和按 照国务院的指示进行安全生产。请编写一个java应用程序描述上述的体制现象。 要求如下: (1)该应用程序中有一个“党中央”接口:CentralPartyCommittee,该接口中 有个“坚持党的领导”方法:void partyLeader() (2)该应用程序中有一个“国务院”抽象类:StateCouncil,
36.中国特色社会主义的体制中有这样的现象:地方省政府要坚持党的领导和按 照国务院的指示进行安全生产.请编写一个java应用程序描述上述的体制现象. 要求如下: (1)该应用程序中有一个“党中央”接口 ...
- java基础接口练习
1.编写2个接口:InterfaceA和InterfaceB:在接口InterfaceA中有个方法voidprintCapitalLetter():在接口InterfaceB中有个方法void pri ...
- Java基础--接口和抽象类的区别
任何不谈使用方法的空理论都是耍流氓 使用场景 · 如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧(Java1.8中接口也可以这么做了) · 如果你想实现多重继承,那么你必须使用接口 ...
- java基础—接口概念
一.接口的概念 JAVA是只支持单继承的,但现实之中存在多重继承这种现象,如“金丝猴是一种动物”,金丝猴从动物这个类继承,同时“金丝猴是一种值钱的东西”,金丝猴从“值钱的东西”这个类继承,同时“金丝猴 ...
- java基础——接口与抽象类的区别
(1)首先接口和抽象类的设计目的就是不一样的.接口是对动作的抽象,而抽象类是对根源的抽象. (2)对于抽象类,一个类只能继承一个抽象类.但是一个类可以同时实现多个接口. (3)接口是公开的,里面不能有 ...
- Java基础——接口
一:接口,英文称作interface,在软件工程中,接口泛指供别人调用的方法或者函数. 在封装与接口中,private关键字封装了对象的内部成员.经过封装,产品隐藏了内部细节,只提供给用户接口(int ...
随机推荐
- Java 程序性能优化
1. singleton延时初始化 class Singleton { private static Singleton _instance = null; public synchronized S ...
- week 4 日志
周一 上上个星期感冒,上个星期看完奇幻森林后痔疮发作,打了整整一礼拜的针,有点背.. 今天看了 css知多少(6)——选择器的优先级 http://www.cnblogs.com/wangfupeng ...
- 查看Mysql表分区语句
SELECT partition_name part, partition_expression expr, partition_description descr, table_rows FROM ...
- SQL Server认证培训与考试
Microsoft 技术专员 (MTA) - 数据库 https://www.microsoft.com/zh-cn/learning/mta-certification.aspx MCSA: SQL ...
- Hadoop笔记
教程: Elasticsearch.MongoDB和Hadoop比较: http://blog.csdn.net/hong0220/article/details/47631409
- CSS Font知识整理总结
1.什么是字体 字体是文字的外在形式,就是文字的风格,是文字的外衣.比如行书.楷书.草书,都是一种字体.同样一个字每个人写起来都会有差异,可以说每个人都有一套潜在的字体库.对于web页面来说,字体就是 ...
- js作用域问题一步步透彻理解
黄金守则第一条: js没有块级作用域(你可以自己闭包或其他方法实现),只有函数级作用域,函数外面的变量函数里面可以找到,函数里面的变量外面找不到. first try: 这是为什么呢?? var a ...
- Java-继承 共3题
一.实现一个名为Person的类和它的子类Employee,Employee有两个子类Faculty和Staff.具体要求如下: (1)Person类中的属性有:姓名name(String类型),地址 ...
- Java程序员的日常—— IOUtils总结
以前写文件的复制很麻烦,需要各种输入流,然后读取line,输出到输出流...其实apache.commons.io里面提供了输入流输出流的常用工具方法,非常方便.下面就结合源码,看看IOUTils都有 ...
- 1编写一个Java程序,计算半径为3.0的圆周长和面积并输出结果。2编写一个Java项目,定义包,在包下定义包含main方法的类。