前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Java 基础]接口

[Java 基础]接口

作者头像
静默虚空
发布2018-01-05 11:11:42
6200
发布2018-01-05 11:11:42
举报

抽象类和抽象方法

抽象方法

在面向对象编程语言中抽象方法指一些只有方法声明而没有具体方法体的方法抽象方法一般存在于抽象类或接口中。

java中,抽象方法就是以 abstract 修饰的方法,只需要声明而不需要实现

代码语言:txt
复制
abstract void f();

抽象类

包含抽象方法的类叫抽象类。

代码语言:txt
复制
abstract class Sample {
 private int param1;
 abstract void f1();
 void f2() {}
 }

注:

1、如果一个类包含有抽象方法,则必须限定为抽象类,否则编译器会报错。

2、抽象类不能实例化,否则编译器会报错。

接口

什么是接口

java中,接口是以 interface 来修饰的。

接口可以被视为一个比“抽象类”更加抽象的类。

实现接口

一个类遵循某个特定或一组接口,必须使用 implements 关键字。

代码语言:txt
复制
interface Fly {
 void fly();
 }
 
 class Bird implements Fly {
     @Override
 public void fly() {
         System.out.println("展翅飞翔");
     }    
 }

注:接口中的方法必须是 public 类型,可以不显示地指定。但是如果指定为其他类型,编译器会报错。

扩展接口

玩过游戏的朋友们,肯定熟悉这个模式。

一名战士需要具备战斗能力。一名骑士不仅需要具备战斗能力,也需要具备骑术。

更进阶的圣骑士则还需要具备法师一般的魔法能力。这个关系可以抽象成以下代码:

代码语言:txt
复制
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中不支持多重继承,以下方式是错误的。一个类不能扩展多个类。

代码语言:txt
复制
class Person {};
 class Student extends Person {};
 class Postgraduate extends Student {};
 class Employee extends Person {};
 class OnJobPostgraduate extends Postgraduate, Employee {};

JAVA中虽然不支持多重继承,但是可以通过接口实现类似的行为。一个类可以实现多个接口。

代码语言:txt
复制
interface Person {};
 interface Student extends Person {};
 interface Postgraduate extends Student {};
 interface Employee extends Person {};
 class OnJobPostgraduate implements Postgraduate, Employee {};
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-01-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档