JAVA抽象类和接口

本文详细介绍了Java中的抽象类和接口,包括它们的概念、特点以及两者之间的异同点。抽象类包含抽象方法和普通方法,不能被实例化,而接口只能包含抽象方法和常量,且一个类可以实现多个接口。抽象类和接口都是为了解耦和代码复用,但接口强调的是多继承和规范,抽象类更注重于部分实现。
摘要由CSDN通过智能技术生成

一、 JAVA抽象类

  1. 抽象方法

        什么是抽象方法

                抽象方法是出现在基类中的一种方法,但要求在派生类中被重写

        抽象方法的特点

             ①. 一个抽象方法只有方法头,没有方法主体。访问修饰符 abstract 返回类型方法名(参数列表);如:public abstract void getArea();

             ②. 抽象方法被用来确保派生类会实现这个方法。

    2. 抽象类

        什么是抽象类

                若类含有抽象方法,则类必须以abstract关键字声明为抽象类。

public abstract class 类名

        抽象类的特点

            ①. 抽象类可以含零至多个普通方法,也可以含零至多个抽象方法。

            ②. 不论抽象类是否含抽象方法,都不允许实例化,即不能创建抽象类的对象,它只能作为其他类的基类。

            ③. 若父类是抽象类,且子类不想成为抽象类,则子类必须将父类中的所有抽象方法重写为带方法体的普通方法,否则子类仍必须是抽象类。

二、 JAVA接口

        1. 什么是接口

                接口定义的通用格式:

public interface 接口名称

{

  (方法头...)

}

        2. 接口的特点

            ①. 接口中的所有方法都是public,抽象方法,和“所有方法都是抽象方法的抽象类”非常类似,它同样不能被实例化, 而且在接口中所列的所有方法必须在别处被重写。

          ②. 一个类可以实现一个或者多个接口,如果一个类要实现接口,它需要在类头中使用implements 关键字。

                    实现一个接口:

public class RubberDuck extends Duck implements Quackable

                    实现多个接口:

当一个类实现多个接口,它必须实现所有接口中的方法。

为了在类定义中说明实现多个接口,需要写上关键字implements,并列出接口的名字,接口名之间用逗号分隔。

public class MyClass implements Interface1,Interface2,Interface3

            ③. 在接口中的所有属性都为 public、final 和 static。因为他们会自动地变为 final, 所以你必须为它们提供初始化值。在下面这个接口中, FIELD1 和 FIELD2 是 public final static int 变量。 任何实现这个接口的类都可以访问这些变量

public interface Doable{

  int FIELD1 = 1, FIELD2 = 2;

  (Method headers...)

}

            ④. 接口的继承性:接口只能继承接口,而不能继承类。与类只能继承一个父类不同,接口可以继承多个父接口,彼此以逗号隔开(各父接口的顺序可任意),表达的逻辑是子接口既是一种父接口1,也是一种父接口2

public interface 接口名 extends 父接口1,父接口2...
{

//字段和抽象方法

}

三、抽象类与接口的异同点

        相同点:

            1. 接口和“所有方法都是抽象方法的抽象类”非常类似,接口本身同样不能被实例化,而且在接口中所列的所有方法必须在别处被重写。

            2. 接口和抽象类都可以被继承

        不同点:

           1. 抽象类中可以有抽象方法和普通方法,子类可以直接继承调用其普通方法;接口中只能有抽象方法,需要子类具体实现

           2. 抽象类中的方法和属性可以是private、public或者protected,没有限制;而接口中的所有属性都为 public、final 和 static且方法必须为public。

            3. 抽象类的关键字是abstract class,接口的关键字是interface

           4. 抽象类只能被类和抽象类继承,且不能被实例化;接口既可以被类和抽象类继承,也可以被接口继承,且接口需要被具体的类继承和实现

            5. 抽象类不支持多继承,只能单继承;接口支持多继承。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值