基础篇——抽象类和接口的区别

写代码的四点:

     1.明确需求。要做什么?

     2.分析思路。要怎么做?(1,2,3……)

     3.确定步骤。每一个思路要用到哪些语句、方法和对象。

     4.代码实现。用具体的语言代码将思路实现出来。

学习新技术的四点:

     1.该技术是什么?

     2.该技术有什么特点?(使用需注意的方面)

     3.该技术怎么使用?(写Demo)

     4.该技术什么时候用?(在Project中的使用场景 )

----------------------早计划,早准备,早完成。------------------------

抽象类

        在面向对象的概念中,所有的对象都是通过类来描述的,但是反过来,并不是所有的类都是用来描述对象的,如果一个类中没有包含足够的信息来描述一个具体的对象,这样的类就是抽象类。抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法、构造方法的访问方式和普通类一样。

        由于抽象类不能实例化对象,所以抽象类必须被继承,才能使用。子类用extends来继承抽象类,如果子类不是抽象类,则子类必须实现抽象类中的所有抽象方法,也可以实现抽象类中的非抽象方法。

        抽象类中可以没有抽象方法,但是如果一个类里有抽象方法,那么这个类只能是抽象类。

/**
 * 水果的抽象类
 */
public abstract class FruitsAbstractActivity {
    //声明变量
    public static final int num = 10;
    public static int max = 10;

    //抽象方法
    public abstract void eat() throws Exception;

    //非抽象方法
    public static void gift(){
        LogUtil.e("TAG", "水果当作礼物");
    }
}

接口(interface)

        在Java编程语言中是一个抽象类型,是抽象方法的集合,通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。解决了单继承的局限性问题。

        接口并不是类,类描述对象的属性和方法,接口则包含类要实现的方法。除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则必须声明为抽象类。

用interface关键字声明一个接口:

//文件名称:Fruits.java
public interface Fruits {
    //声明变量
    public static final int num = 10;

    //抽象方法
    public abstract void eat() throws Exception;
    public abstract void gift();
}

接口和抽象类的区别:

        1.接口中不能有构造函数,而抽象类中可以有构造函数;

        2.接口中的方法不能有方法体,而抽象类中的方法可以有方法体;

        3.接口中的成员变量只能是public static final类型的,而抽象类中的成员变量可以是

           各种类型的;

        4.接口中的方法全都是public  abstract的方法,如果省略修饰符,则默认的

            也是public abstract修饰,抽象类中的方法可以被public、protected等修饰符修饰。

        5.接口中不能包含静态代码块和静态方法,而抽象类可以包含静态代码块和静态方法;

        6.一个类可以实现多个接口,而一个类只能继承一个抽象类;

        7.抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,

           接口变量必须指向实现所有接口方法的类的对象。

抽象类和接口的使用:

接口主要用于模块与模块之间的调用,Java不支持多继承,使用接口避免了单继承的局限性。

抽象类主要用于当做基础类使用,即基类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类,比较麻烦。

发布了55 篇原创文章 · 获赞 134 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/qq941263013/article/details/83379161
今日推荐