抽象(abstract)和接口(interface)——Java

抽象(abstract)

抽象是一种思维方式,抽取出“公共”的部分出来。
越抽象的思维,涵盖的范围越大
越具体的思维,可以落地的可能性越大。

抽象类

专门有一种类,被称为抽象类——这些无法实例化出对象
通过abstract(抽象)修饰类的定义

public abstract class Test {
    
    
}

抽象类无法实例化对象,如:
在这里插入图片描述

抽象方法

抽象方法——定义在父类中,专门留给子类去重写的方法(父类只有方法签名,没有实现),使用abstract修饰普通方法定义。
在这里插入图片描述
如图,抽象方法,只在父类中有方法签名,结尾用 ; 但是在子类中必须重写,或者也可以声明自己是抽象类。

总结:

抽象方法只能出现在抽象类,抽象类不一定有抽象方法。
抽象类VS普通类: 是否可以实例化对象

abstract在Java中的两个作用:
1、修饰类的定义,类变成抽象类。该类无法被实例化。
2、修饰方法的定义

  1. 要求类必须是抽象类
  2. 该方法只需要签名,无需具体的方法体(只说明目的,没有怎么做)
    在这里插入图片描述我们可以这么理解,抽象类承诺有这些抽象方法,但是都没有实现,而实现类继承抽象类,并重写实现了这些抽象方法,供使用方调用。

接口(interface)

可以使用抽象类,也可以使用接口(interface)。
在这里插入图片描述
我们可以这样理解接口,接口就是一种要求(标准),调用者为甲方,实现者为乙方,通过这样,实现了分工,每个类 都专注自己的专业,并且很容易替换乙方,因为标准是一致的。

接口的定义:

interface 名称{…}

public interface Test2 {
    
    
}

这样书写简单,虽然没写,但是隐含着abstract修饰。
接口不能实例化成对象,允许并且只允许出现抽象方法。

接口中的方法

public interface Test2 {
    
    
    void method1();
    void method2();
}
  • 定义的所有方法都是抽象方法
  • 虽然没,写但是都隐含着abstract修饰
  • 隐含着访问限定符都是public
  • 不用写方法体,void method();

类的声明实现接口

class 类名 implements 接口名
可以理解成把接口当成抽象类去理解即可

实现类必须做到:

  • 要把所有抽象方法都实现了——不能在有抽象方法了
  • 或者声明自己是抽象类

使用接口

1、和抽象类一样,不能直接实例化对象
2、多态使用

和继承不同

1、一个类只允许继承自一个父类
2、一个类可以同时实现多个接口

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_52142731/article/details/113431146