java 接口 继承 区别_Java 接口、接口的实现,以及同继承的区别详解

本文介绍了Java中的接口和抽象类的概念及区别。接口用于定义类的行为规范,它包含全局常量和抽象方法,类可以实现多个接口。抽象类则可以包含抽象方法和具体方法,一个类只能继承一个抽象类。接口与抽象类的使用有助于实现多继承的效果,并降低了代码的耦合度。在Java中,类与接口之间是实现关系,接口与接口之间可以多继承。
摘要由CSDN通过智能技术生成

接口

什么是接口?当一个抽象类中的方法都是抽象的时候,这时可以将该抽象类用另一种形式定义和表示,就是接口interface

定义接口使用的关键字不是class,是interface.

对于接口当中常见的成员:而且这些成员都有固定的修饰符

1、全局常量:public static final

2、抽象方法: public abstract

由此得出结论,接口中的成员都是公共的权限。

interface Demo

{

public static final int Num=4;

public abstract void show1()'

public abstract void show2();

/*

public static final 、public abstract 可以省略,在接口里你没写程序会自动帮你添加

但是最好要写,省略的话可读性极差!!!

*/

}

类与类之间是继承关系,类与接口是实现关系

实现是接口有的,都得覆盖,继承是父类有的,可以拿来用,也可覆盖某些方法。

接口不可以实例化,只能由实现了接口的子类并覆盖了接口中所有的抽象方法后,该子类才可以实例化。

否则,这个子类就是一个抽象类。

class DemoImpl implements /*实现*/ Demo

{

public void show1(){}

public void show2(){}

}

class InterfaceDemo

{

public static void main (String[] args)

{

DemoImpl d = new DemoImpl();

System.out.println(d.Num);

System.out.println(DemoImpl.Num);

System.out.println(Demo.Num);

}

}

在Java 中不直接支持多继承,因为会出现调用的不确定性。

所以java将多继承机制进行改良,在Java中变成了多实现。

一个类可以实现多接口

多实现是怎么体现的?

interface A

{

public void show();

}

interface Z

{

public void show();

public int add(int a,int b);

}

class Test implements A,Z//多实现

{

public void show(){}

public int add(int a,int b)

{

return a+b+3;

}

}

一个类在继承另一个类的同时,还可以实现多个接口

class Q

{

public void method()

{}

}

class Test2 extends Q implements A,Z

{

实现...

}

接口的出现,避免了单继承的局限性。因为一个类只能有一个父类,但是可以有多个接口,想要对其功能进行扩展,可以用接口。

类与类之间继承关系,类与接口之间实现关系。接口与接口之间继承关系(可以进行多继承)。

interface CC

{

void show();

}

interface MM

{

void method();

}

interface QQ extend CC ,MM

{

void function();

}

class WW implements QQ

{

void show(){}

void method(){}

void function(){}

}

接口是对外暴露的规则、是程序的功能扩展,接口的出现降低耦合性、可以用来多实现

抽象类和接口的异同点

相同点 :

都是不断向上抽取而来的

不同点:

1、抽象类需要被继承,而且只能单继承。接口需要被实现,而且可以多实现。

2、抽象类中可以定义抽象方法和非抽象方法,子类继承后,可以直接使用非抽象方法。

接口中只能定义抽象方法,必须由子类去实现。

3、抽象类的继承是 is a 关系(这个类哪一类) ,在定义该体系的基本共性内容。

接口的实现是like a 关系(这个类像哪种) ,在定义体系额外功能。

abstract class 犬

{

abstract void 吼叫();

}

interface 导盲

{

abstract void 导盲();

}

class 导盲犬 extends 犬 implements 导盲

{

public void 吼叫 ()

{

}

public void 导盲(){}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值