• 抽象类和接口


     接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。

    抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。

    人可以吃东西,狗也可以吃东西,你可以把吃东西定义成一个接口,然后让这些类去实现它.

    所以,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口)

    抽象类

    定义:包含一个抽象方法的类就是抽象类。

    • 抽象方法:只声明而未实现的方法称为抽象方法,抽象类和抽象方法必须使用abstract修饰。
    • 抽象类不能直接实例化。抽象类必须有子类,子类必须覆写抽象类的抽象方法,如果不覆写抽象方法,子类还是抽象类。
    • 抽象类可以有构造方法,但构造方法不能被声明为抽象。
    • 抽象类不能被实例化,即不能用new去产生对象,但可声明对象。所以抽象类的引用可以作为方法的参数。

    接口

    定义:接口是抽象方法和常量值(static final修饰)的定义的集合,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。

    • l Java接口不能有构造函数(构造器),不能被实例化。区别:抽象类可以有构造方法
    • l Java接口中的成员常量默认是用public static final标识的(可省略),都是全局静态常量,必须被显示初始化。
    1 public interface AA {
    2     static final String AUTHOR = "weller";
    3     abstract void print();
    4     abstract String getInfo();
    5 }
    • l Java接口中的方法默认都是public abstract类型的(可省略),没有方法体。
    • 接口中不能包含静态方法。
    • 当一个类实现某个接口时,它必须定义这个接口的所有抽象方法(包括这个接口的父接口中的方法),否则这个类必须声明为抽象的,即可以定义一个抽象类去实现一个接口中定义的部分方法。
    • 一个接口不能实现(implements)另一个接口,但可继承(extends)多个其它的接口。
    • 一个类在继承一个父类的同时,可实现一个或多个接口,但extends关键字必须位于implements关键字之前。例:public class A extends B implements C, D {...}
    • l 接口和抽象类都不允许实例化对象,但都可以通过子类利用多态性向上转型完成实例化

    抽象类和接口的区别(面试重点)

  • 相关阅读:
    Python 更新pip报错:Could not install packages due to an EnvironmentError: [WinError 5] 拒绝访问
    Vs code 配置(1)-win10
    博客园主题--sukura
    log4j
    安装ant问题
    freemarker string= null
    学习随想
    j2ee学习资料收集
    eclipse + marven
    好文mark
  • 原文地址:https://www.cnblogs.com/mzct123/p/8283504.html
Copyright © 2020-2023  润新知