栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java中的抽象类和接口

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中的抽象类和接口

什么是抽象类?
  • 抽象类的定义:
    抽象指的是被abstract修饰的类(abstract关键字要放在访问修饰词背后,class前),抽象类中允许具有抽象方法。
public abstract class Main
  • 抽象方法:
    抽象指的是被abstract修饰的方法(abstract关键字要放在访问修饰词背后,返回值前)。其中抽象方法没有具体的实现,因此所对应的类也不允许实例化,抽象类对类成员不做要求。继承了抽象类的非抽象类,必须重写抽象类的所有抽象方法。
public  abstract  void func();
  • 抽象类的意义
    抽象类的作用很明显,就是专门用来继承的类。但是也许有人会觉得定义抽象类多此一举,因为只要子类设计者记得重写需要重写方法即可,不需要专门用关键词来修饰一个方法。
    但定义抽象类是有意义的,为了编译器的检查机制。编译器会提醒类设计者继承的是一个抽象类,以防止类的调用者不重写本该重写的方法所带来的困扰。其实很多语法都是为了多一层编译器的检查,例如重写方法时的注解。
什么是接口?
  • 接口的定义
    接口指的是在类外定义的,具有interface关键字的代码块,特点是接口和其成员有默认的修饰词。
    其中,接口默认是abstract修饰,interface允许用abstract修饰,但这个abstract无实际作用。
    而接口中的字段默认被public static final修饰,因为被final修饰,所以必须赋予初值,否则直接报错。
    接口中的方法默认是public abstract修饰,但也有特例。由于静态方法和对象无关,继承之后也无需重写,所以允许在接口中定义静态方法,但由于其不能被重写,接口中的静态方法必须具有具体的实现。此外还有被default修饰的方法也可以有具体实现,但这里不多提及。
interface a {
    int b = 10;
    void func();
    static void func2() {
        
    }
    default void func3() {
        
    }
}
  • 接口的意义
    接口最大的作用是近似实现多继承。Java是只有单继承结构,一个类只能有一个父类。但如果想要实现类似多继承的效果,就可以使用接口,一个类允许实现多个接口。使用implement关键字即可,可以用逗号隔开要实现的接口。
public abstract class Main extend ClassA implements IA,IB
抽象类和接口的区别和联系是什么?
  • 抽象类和接口的联系:都有abstract关键字(其中接口是默认修饰,而抽象类是显式修饰的),都不能实例化,都是用来被继承的。

  • 抽象类的接口的区别:
    1成员的区别:抽象类对成员不做限制,而接口中的字段默认public static final,方法默认pubic abstract;
    2继承结构的区别:抽象类只能使用单继承,而接口允许多继承。
    3语法上的区别:例如抽象类定义用class而接口用interface,继承抽象类用extends而实现接口用implement等。

其中1和2为主要的区别。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/361386.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号