java面向对象 接口_接口_Java面向对象 - 编程那点事

如果一个抽象类中的所有方法都是抽象的,则可以将这个类用另外一种方式来定义,即接口。在定义接口时,需要使用interface关键字来声明,具体示例如下:interface Animal {

int ID = 1; //定义全局常量

void breathe(); //定义抽象方法

void run();

}

上面的代码中,Animal即为一个接口。从示例中会发现抽象方法breathe()并没有使用abstract关键字来修饰,这是因为接口中定义的方法和变量都包含一些默认修饰符。接口中定义的方法默认使用“publicabstract”来修饰,即抽象方法。接口中的变量默认使用“publicstaticfinal”来修饰,即全局常量。

由于接口中的方法都是抽象方法,因此不能通过实例化对象的方式来调用接口中的方法。此时需要定义一个类,并使用implements关键字实现接口中所有的方法。接下来通过一个案例来学习。// 定义接口animal

interface Animal {

int ID = 1;

void breathe();

void run();

}

// 定义dog实现接口Animal

class Dog implements Animal {

public void breathe() {

System.out.println("狗在呼吸");

}

public void run() {

System.out.println("狗在跑");

}

}

public class Example {

public static void main(String[] args) {

Dog dog = new Dog();

dog.breathe();

dog.run();

}

}

运行结果:狗在呼吸

狗在跑

从运行结果可以看出,类Dog在实现了Animal接口后是可以被实例化的。

上面的例子是类与接口之间的实现关系,在程序中,还可以定义一个接口使用extends关键字去继承另一个接口,接下来对上一个例子稍加修改,演示接口之间的继承关系。//定义了Animal 接口

interface Animal {

int ID = 1; // 定义全局常量

void breathe(); // 定义抽象方法breathe()

void run(); // 定义抽象方法run()

}

// 定义了LandAnimal 接口,并继承了Animal 接口

interface LandAnimal extends Animal { // 接口继承接口

void liveOnland(); // 定义抽象方法liveOnLand()

}

// 定义Dog 类实现Animal 接口

class Dog implements LandAnimal {

// 实现breathe()方法

public void breathe() {

System.out.println("狗在呼吸");

}

// 实现run()方法

public void run() {

System.out.println("狗在跑");

}

// 实现liveOnLand()方法

public void liveOnland() {

// TODO Auto-generated method stub

System.out.println("狗生活在陆地上");

}

}

public class Example {

public static void main(String[] args) {

Dog dog = new Dog(); // 创建Dog 类的实例对象

dog.breathe(); // 调用Dog 类的breathe()方法

dog.run(); // 调用Dog 类的run()方法

dog.liveOnland(); // 调用Dog 类的liveOnland()方法

}

}

运行结果:狗在呼吸

狗在跑

狗生活在陆地上

例中,定义了两个接口,其中LandAnimal接口继承了Animal接口,因此LandAnimal接口包含了三个抽象方法。当Dog类实现LandAnimal接口时,需要实现两个接口中定义的三个方法。从运行结果看出,程序可以针对Dog类实例化对象并调用类中的方法。

为了加深初学者对接口的认识,接下来对接口的特点进行归纳,具体如下:接口中的方法都是抽象的,不能实例化对象。

当一个类实现接口时,如果这个类是抽象类,则实现接口中的部分方法即可,否则需要实现接口中的所有方法。

一个类通过implements关键字实现接口时,可以实现多个接口,被实现的多个接口之间要用逗号隔开。具体示例如下:interface Run {

程序代码……

}

interface Fly {

程序代码……

}

class Bird implements Run,Fly {

程序代码……

}一个接口可以通过extends关键字继承多个接口,接口之间用逗号隔开。具体示例如下:interface Running {

程序代码……

}

interface Flying {

程序代码……

}

Interface Eating extends Running,Flying {

程序代码……

}一个类在继承另一个类的同时还可以实现接口,此时,extends关键字必须位于implements关键字之前。具体示例如下:class Dog extends Canidae implements Animal { //先继承,再实现

程序代码……

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值