java基础篇(五:面向对象——1)接口和抽象类

来源:互联网 发布:javascript 反编译 编辑:程序博客网 时间:2024/05/22 00:08

引言

           抽象是对象由低级向高级的过渡,总结出共同点得到一个新的对象。

概述

           接口和抽象类一直都是java中抽象领域的焦点,小编带大家一探究竟。

内容

            一 抽象类 

      1定义:关键字abstract修饰的类

      2特点:

1)抽象方法一定在抽象类中

2)抽象类和抽象方法必须被abstract修饰

3)抽象类不能被实例化

4)抽象类中的抽象方法要被使用,必须由子类复写起所有的抽象方法后,建立子类对象调用。

如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。

5)抽象类必须被继承,抽象类的抽象方法必须被重写

6抽象方法只需声明,而不需要实现

       3抽象类与普通类的区别

1)抽象方法必须为public或者protectedprivate修饰的类不能被子类继承,子类无法实现该方法),缺省情况下是public

2)抽象类不能用来创建对象,即实例化

3)如果一个类继承一个抽象类,子类必须重写父类的抽象方法,否则必须将子类也定义为abstract

       4问题

1abstract和哪些关键字不能共存?

final:被final修饰的类不能有子类。而被abstract修饰的类一定是一个父类。

private:抽象类中的私有的抽象方法,不被子类所知,就无法被复写。

       而抽象方法出现的就是需要被复写。

static:如果static可以修饰抽象方法,那么连对象都省了,直接类名调用就可以了。

       可是抽象方法运行没意义。

2)抽象类中是否含有构造函数?

有,抽象类是一个父类,要给子类提供实例的初始化。


             二 接口     

            1 定义:一些方法特征的集合。

            2 特点:只有方法的特征,没有方法的实现

            3 含义

              (1)java接口:java语言中存在的结构,含有特定的语法和结构

              (2)一个类所具有的方法的特征集合,一种逻辑上的抽象

            4 特性

              (1)不能实例化

              (2)不能构造接口的对象,可以声明接口的变量

              (3)接口中不能包含实例域或静态方法

              (4)接口与接口之间可以是继承关系,并且可以实现多继承

              (5)一个非抽象类实现了某个接口,就必须实现该接口中的所有方法;一个实现了某个接口的抽象类,可以不实现该接口中的抽象方法。

           5 注意:

              (1)接口固定的修饰符可以省略

              (2)一个类实现多个接口,要以逗号隔开

              (3)接口的变量必须引用实现了接口的类对象

           6 疑问

              (1)接口为何不能用继承代替

                    java不支持多继承,会造成子类中某些方法或者变量的不确定性

           7 实践

 public interface Test{           public static final int num; //成员常量具有固定的修饰符:public static final           public abstract void method; //成员函数具有固定的修饰符:public abstract         }public class Testimpl implements Test{           // 实现接口中的所有方法                 .....       }

             三 对比   

    1 语法层面上的区别

1)抽象类可以提供成员方法的实现细节,而接口中只能存在publicabstract 方法;

2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是publicstatic final类型的;

3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;

4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。

     2设计层面上的区别

1)抽象类是对事物的抽象,即对类的抽象;接口是对行为的抽象。

抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。

2)抽象类作为很多子类的父类,它是一种模板式设计。而接口是一种行为规范,它是一种辐射式设计。

总结

            java的接口和抽象类各自适合不同应用场景,必要的时候二者可以结合使用,最重要是理解它们共同点——抽象,作为面向对象的三大特性之一,是高级开发人员必备思想。

阅读全文
0 0
原创粉丝点击