JAVA中面向对象-接口与实现 以及 抽象类与接口的异同点

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_42947972/article/details/102490999

JAVA接口与实现

接口-关键字: interface
实现-关键字: implements

什么时候用接口?

例子:

    abstract class AbsDemo
    {
        abstract void show1();
        abstract void show2();
    }
    

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

    interface AbsDemo
    {
        public abstract void show1();
        public abstract void show2();
    }

publicabstract 这两个关键词在接口不写也可以,因为已经默认给我们了
但是一般最好加上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关系,定义体系额外功能

猜你喜欢

转载自blog.csdn.net/weixin_42947972/article/details/102490999