您的位置:首页 > 编程语言 > Java开发

#Thinking in Java阅读笔记# 第九章 接口

2017-11-04 21:34 513 查看

抽象类和抽象方法

抽象方法是有方法声明而没有方法体的函数,必须要用abstract标明。

修饰符 + abstract void f();

而含有一个或者多个抽象方法的类就是抽象类(Abstract Class),必须注明。而抽象类中不要求所有方法都是抽象方法。

abstract class abs{….}

如果新类继承了抽象类,则必须为抽象类中的所有抽象方法提供具体实现,否则新类还为抽象类,这样就没有意义。

抽象类不能实例化,但是可以产生抽象类对象,用来保存非抽象子类的对象。

关键字:extends



抽象类可以包括域与常量

接口 Interface

接口实质上是含有一种或多种抽象方法的完全抽象的类,它根本就没有任何的具体实现。接口可以包含常量,默认为static 和 final的,接口中的方法默认是public的,所以在接口定义中的方法可以不指明public,但是实现了接口的类必须将接口方法指定为public,否则这些方法在继承的过程中会引起访问权限的降低。

因为接口的实质是类,所以可以构建接口的对象变量,用来储存实现了这些接口的类的引用。

关键字:implements

interface Rodent{
void hop();
void scurry();
}
class Mouse implements Rodent{
public void hop(){
System.out.println("Mouse hopping");
}
public void scurry(){
System.out.println("Mouse scurrying");
}
}


Java的多重继承

在Java中,导出类只能继承于一个基类,但是却可以实现多种接口,并且导出类可以向上转型为每个接口。在按这种方式组合时,必须将类的继承放在前面,后面跟着接口

class Hero extends ActionCharacter implements CanFight,CanSwim,CanFly{
...
}


使用接口的原因:1.方便导出类向上转型为各种基类型 2.防止其他人创建某类的对象,确保这仅仅是建立一个接口 3.使得同一接口具有不同的具体实现

通过继承扩展接口

接口的继承有两种方式:

1.继承单个接口

interface Monster{
void menace();
}
interface Dangerous extends Monster{
void destroy();
}
class Zilla implements Dangerous<
9a91
/span>{
public void destroy(){  }
public void menace(){  }
}


2.继承接口组:只有接口继承才能使用这种语法,extends用于单一类、多基类接口

interface First{
void CountOne();
void CountTwo();
}
interface Second{
void CountThree();
void CountFour();
}
interface Third{
void CountFive();
void CountSix();
}
interface Combo extends First,Second,Third{
void Count();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: