Java基础(8):面向对象—抽象类和接口的区别和各自特点
2017-04-04 23:11
429 查看
抽象类和接口的简单定义:
从上面图中来看,越往上越抽象。个人理解抽象的本质是为了提取出通用的方法和状态。在通常对类的定义中,类是对象的抽象,是对象的模板,而抽象类也可以理解为对类的抽象,是类的模板。如果一个类中没有足够的信息来描绘一个具体对象,那这个类就可以定义为抽象类。
接口类算是一个特殊的抽象类,它提供统一的协议,体现一种规范,只要实现了接口,就必须实现其中的所有方法。在接口中,不提供具体实现方式。
抽象类的语法规则:
抽象类介乎于普通类和接口类之间,所以在抽象类中,即能定义抽象方法,也能定义普通方法。定义抽象方法需要加上abstract ,抽象方法是没有方法体的。
抽象类可以有构造方法,接口类没有。如果没有构造方法,那抽象类的子类无法创建对象,那抽象类就毫无意义。
抽象类是不能实例化的,从面向对象思想来看,抽象类本身是对类的抽象,是用于描述类的,并不具备描述对象的能力,所以实例化没意义。从代码运行运行角度来看,如果抽象类可以实例化,又该怎么去调用抽象方法呢?所以抽象类实例化也不可能。
接口类的语法规则:
接口类中只能定义抽象方法,但是Java8为接口增加了默认方法,默认方法和普通方法一样,只是采用default修饰。实现类也可以调用接口中的默认方法。
接口类中的方法默认是 public abstract 类型,所以在接口类中定义方法省略修饰符。
接口中的成员变量默认是static和final类型的,默认是常量,所以要手动初始化。常量记得全大写。
接口可以继承另一个接口,例如: interface A{ void test(); } interface B extends A { } ,B接口中可以获得接口A中的所有方法。
使用场景:
如果你有几个类共同使用一批方法,并且想让它们中的有些方法有默认实现,那么使用抽象类。可以做到普通类与接口类结合的折中方式。如果要实现多重继承时,必须使用接口。因为在Java中不允许子类继承多个父类,但允许实现多个接口,因此可以使用接口来解决该问题。
抽象类和接口的简单定义:
从上面图中来看,越往上越抽象。个人理解抽象的本质是为了提取出通用的方法和状态。在通常对类的定义中,类是对象的抽象,是对象的模板,而抽象类也可以理解为对类的抽象,是类的模板。如果一个类中没有足够的信息来描绘一个具体对象,那这个类就可以定义为抽象类。
接口类算是一个特殊的抽象类,它提供统一的协议,体现一种规范,只要实现了接口,就必须实现其中的所有方法。在接口中,不提供具体实现方式。
抽象类的语法规则:
抽象类介乎于普通类和接口类之间,所以在抽象类中,即能定义抽象方法,也能定义普通方法。定义抽象方法需要加上abstract ,抽象方法是没有方法体的。
抽象类可以有构造方法,接口类没有。如果没有构造方法,那抽象类的子类无法创建对象,那抽象类就毫无意义。
抽象类是不能实例化的,从面向对象思想来看,抽象类本身是对类的抽象,是用于描述类的,并不具备描述对象的能力,所以实例化没意义。从代码运行运行角度来看,如果抽象类可以实例化,又该怎么去调用抽象方法呢?所以抽象类实例化也不可能。
接口类的语法规则:
接口类中只能定义抽象方法,但是Java8为接口增加了默认方法,默认方法和普通方法一样,只是采用default修饰。实现类也可以调用接口中的默认方法。
接口类中的方法默认是 public abstract 类型,所以在接口类中定义方法省略修饰符。
接口中的成员变量默认是static和final类型的,默认是常量,所以要手动初始化。常量记得全大写。
接口可以继承另一个接口,例如: interface A{ void test(); } interface B extends A { } ,B接口中可以获得接口A中的所有方法。
使用场景:
如果你有几个类共同使用一批方法,并且想让它们中的有些方法有默认实现,那么使用抽象类。可以做到普通类与接口类结合的折中方式。
如果要实现多重继承时,必须使用接口。因为在Java中不允许子类继承多个父类,但允许实现多个接口,因此可以使用接口来解决该问题。
相关文章推荐
- 黑马程序员_Java基础_面向对象(继承、子父类变量和函数以及构造函数特点、final关键字、抽象类、模版方法模式、接口)
- java基础(六)——面向对象_继承、抽象类、接口
- 黑马程序员 Java基础 面向对象:继承、final关键字、抽象类、模版方法模式、接口、多态、Object类
- java基础知识—JAVA中抽象类和接口的区别
- java 基础----抽象类与接口的区别,知道区别才能准备的应用
- 详细解析抽象类和接口的区别-Java基础-Java-编程开发
- 黑马程序员——Java基础---面向对象(封装、继承、单例、抽象类、接口、内部类)
- Java基础 面向对象(3) 继承 final关键字 抽象类 接口
- 黑马程序员-17-java基础-面向对象(3)-继承、抽象类、接口与多态
- 十、Java基础---------面向对象之抽象类与接口
- JAVA基础--接口的概念、分类及与抽象类的区别
- Java基础(面向对象三——继承、final关键字、抽象类、接口)
- java基础4--面向对象(下)(抽象类与接口)
- Java基础——面向对象——继承、抽象类、接口、多态、包、内部类、异常等
- 【Java基础 011】 抽象类和接口的区别
- Java基础——继承+子父类相关特点+Final关键字+抽象类+模板方法设计模式+接口
- 黑马程序员——Java基础--接口和抽象类的区别
- 黑马程序员——【Java基础】——面向对象(一)概述、类与对象、继承、抽象类、接口、多态、内部类
- Java基础知识强化18:抽象类、接口的区别 和 抽象类可以不实现接口的全部方法
- 黑马程序员---Java基础---面向对象:继承、抽象类、接口