JAVA接口与实现
接口-关键字: interface
实现-关键字: implements
什么时候用接口?
例子:
abstract class AbsDemo
{
abstract void show1();
abstract void show2();
}
当一个抽象类中的方法都是抽象的时候,这时可以将该抽象类,用另一种形式定义和表示,这就是接口 interface
即:
interface AbsDemo
{
public abstract void show1();
public abstract void show2();
}
public
和 abstract
这两个关键词在接口不写也可以,因为已经默认给我们了
但是一般最好加上public
,让代码更容易看.
.
.
.
类与类是继承关系,类与接口是实现关系
class DemoImpl implements /*实现*/AbsDemo
{
public void show1()
{//里面内容进行覆盖
};
public void show2()
{//里面内容进行覆盖
};
}
接口不可以实例化
只能由实现了接口的子类并覆盖了接口中所有抽象方法后,该子类才可以进行实例化
否则,这个子类就是一个抽象类
.
.
.
在Java中不直接支持多继承,因为会出现调用的不确定性.
所以Java将多继承机制进行改良,在Java中变成了多实现.
一个类可以实现多个接口.
例子1:
interface A
{
public abstract void show();
}
interface Z
{
public abstract void show1();
}
class Test implements A,Z //多实现
{
public void show()
{
}
public void show1()
{
}
}
例子2:
interface A
{
public abstract void show();
}
interface Z
{
public abstract void show();
}
class Test implements A,Z //多实现
{
public void show()
{
}
//覆盖了他们两个,这就就不会出现c++中多继承的不确定性
}
.
.
.
接口的出现避免了单继承的局限性.
例子:
interface A
{
public abstract void show();
}
interface Z
{
public abstract void show();
}
class Q
{
public void method()
{
}
}
class Test2 extends/*继承*/ Q implements/*实现*/ A,Z
{
public void show()
{
method();
}
}
单继承但实现了多个接口
.
.
.
.
接口与接口是继承关系,而且接口可以多继承
例子:
interface/*接口*/ CC
{
public abstract void show();
}
interface/*接口*/ MM
{
public abstract void method();
}
interface QQ extends/*继承*/ CC,MM
{
public abstract void function();
}
class WW implements/*实现*/ QQ
{
//覆盖三个方法
public void show(){}
public void method(){}
public void function(){}
}
接口的特点:
接口是对外暴露的规则
接口是程序的功能扩展
接口的出现降低了耦合性
接口可以用来多实现
.
.
抽象类和接口的异同点
相同点:
都是不断向上抽取而来的.
不同点:
1.抽象类需要被继承,而且只能单继承.
接口需要被实现,而且可以多接口.
2.抽象类中可以定义抽象方法和非抽象方法,子类继承后,可以直接使用非抽象方法.
接口中只能定义抽象方法,必须由子类去实现.
3.抽象类的继承是 is a关系,在定义该体系的基本共性内容
接口的实现是like a关系,定义体系额外功能
转载:https://blog.csdn.net/weixin_42947972/article/details/102490999
查看评论