java中extends用法_java中extends和implements的区别,怎么用?

本文详细介绍了面向对象编程中的接口(Interface)和继承(Inheritance)概念。通过实例展示了如何使用接口实现多态性和抽象行为,以及继承在类层次结构中的作用。强调了接口作为标准,允许类实现多个接口,而继承则用于扩展已有类的功能。同时,文章还探讨了Java中extends和implements关键字的使用规则和注意事项。
摘要由CSDN通过智能技术生成

一个是继承,一个是实现接口,继承这个可以理解为继承父类的方法,父类中的方法可以在子类中用到,super(),实现接口就是在接口中定义了方法,这个方法要你自己去实现,接口可以看作一个标准,比如定义了一个动物的接口,它里面有吃(eat())这个方法,你就可以实现这个方法implements,这个方法是自己写,可以是吃苹果,吃梨子,香蕉,或者其他的。IMPLEMENTS就是具体实现这个接口。

implements 也是实现父类和子类之间继承关系的关键字,如类 A 继承 类 B 写成 class A implements B{}.

implements是一个类实现一个接口用的关键字,他是用来实现接口中定义的抽象方法。比如:people是一个接口,他里面有say这个方法。public interface people(){ public say();}但是接口没有方法体。只能通过一个具体的类去实现其中的方法体。比如chinese这个类,就实现了people这个接口。 public class chinese implements people{ public say() {System.out.println("你好!");}}

接口实现的注意点:

a.实现一个接口就是要实现该接口的所有的方法(抽象类除外)。

b.接口中的方法都是抽象的。

c.多个无关的类可以实现同一个接口,一个类可以实现多个无关的接口。

extends与implements的不同

extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,也可以调用父类初始化 this.parent()。而且会覆盖父类定义的变量或者函数。这样的好处是:架构师定义好接口,让工程师实现就可以了。整个项目开发效率和开发成本大大降低。

JAVA中不支持多重继承,但是可以用接口来实现,这样就要用到implements,继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了。实现父类,子类不可以覆盖父类的方法或者变量。即使子类定义与父类相同的变量或者函数,也会被父类取代掉。

格式:

class A extends B implements C,D,E

一个类通过关键字implements声明自己使用一个或者多个接口。在类的声明中,通过关键字extends来创建一个类的子类。

class 子类名 extends 父类名 implenments 接口名

{...

}

若同时用到 extends 和 implements 的时候,extends 必须放在 implements 关键字之前。

例子:

这里有一个游戏,人猿泰山。 主角是一个单独的类,这里我们主要用怪物说明接口的用法: 怪物有很多种, 按地域分:有的在天上飞,有的在地上跑,有的在水里游 按攻击方式分:有的能近距离物理攻击,有的能远距离射击

假设游戏里需要这样的几 种怪——

野狗:地上移动,近距离攻击

黑熊:地上移动,近/远距离攻击

秃鹫:地上/天上移动,远距离攻击

食人鱼: 水中移动,近距离攻击

鳄鱼:地上/水中移动,近距离攻击

显然,如果我们将每一种怪物定义为一个类,那就不是面向对象的程序开 发了,我们应当使用接口:

interface OnEarth{//陆地接口

int earthSpeed;//陆地移动速度

void earthMove();//陆地移动方法

}

interface OnWater{//水中接口

int waterSpeed;//水中移动速度

void waterMove();//水中移动方法

}

interface OnAir{//空中接口

int airSpeed;//水中移动速度

void airMove();//水中移动方法

}

interface NearAttack{//近距离攻击接口

int nearAttackPower;//近距离攻击力

void nearAttack();//近距离攻击方法

}

interface FarAttack{//远距离攻击接口

int farAttackPower;//远距离攻击力

void farAttack();//远距离攻击方法

}

这样一来,根据需求,我们可以选择性的继承接口:

class Tyke implements OnEarth, NearAttack{//野狗类

void earthMove(){//实现继承的方法1

}

void nearAttack(){//实现继承的方法2

}

}

class BlackBear implements OnEarth, NearAttack, FarAttack{//黑熊类

void earthMove(){//实现继承的方法1

}

void nearAttack(){//实现继承的方法2

}

void farAttack(){//实现继承的方法3

}

}

class Vulture implements OnEarth, OnAir, FarAttack{//秃鹫类

void earthMove(){//实现继承的方法1

}

void airMove(){//实现继承的方法2

}

void farAttack(){//实现继承的方法3

}

}

class ManeatFish implements OnWater, NearAttack{//食人鱼类

void waterMove(){//实现继承的方法1

}

void nearAttack(){//实现继承的方法2

}

}

class Crocodile implements OnEarth, OnWater, NearAttack{//鳄鱼类

void earthMove(){//实现继承的方法1

}

void waterMove(){//实现继承的方法2

}

void nearAttack(){//实现继承的方法3

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值