抽象类和接口
2015-11-07 10:27
239 查看
1.抽象类
1)当一个类用abstract关键字修饰的时候,那么这个类就叫做抽象类2)抽象类中可以有抽象方法,也可以没有抽象方法,也允许存在非抽象的方法。
3)抽象方法是一个方法被用abstract关键字修饰的时候,那么这个方法就叫做抽象方法
4)如果一个类中含有被abstract修饰的抽象方法,那么该类必须被abstract关键字修饰,使他成为一个抽象类
5)抽象方法是一种不完整的方法,它只有方法的声明,但是没有方法体的存在。
比如:
<span style="font-size:14px;">abstract void a();</span>6)如果从一个抽象类继承的话,并且想创建该类的对象,那么其子类必须实现抽象类中的所有抽象方法,否则的话,该子类仍然是一个抽象类。
7)抽象类是很有用的重构工具,因为它使得我们可以很容易的将公共方法沿着继承的层次结构向上移动。
2.接口
1)抽象类只是提供了接口的部分,但是没有提供任何相应的具体实现,这些实现都必须让继承它的子类去实现。2)接口用interface关键字修饰,他可以产生一个完全的抽象类,他根本就没有tigo 任何具体的实现,只是允许创建者确定方法的名字,参数列表和返回值类型,但是没有方法体。接口只是提供了形式,但是没有提供任何具体的实现。
3)接口不但是一个抽象类,而且它允许人们通过创建一个能够被向上转型为多种基类的类型。
4)让某个类来实现接口的话,需要使用implements关键字,比如:
<span style="font-size:14px;">interface A{ int a(); } public class B implements A{ //..... }</span>
5)一旦某个类实现了某个接口,那么它的实现就变成了一个普通的类
6)接口中的域:一般都是public static final修饰的,这些可以省略不写,常量的名字一般是由英文大写字母组成的,每个单词之间用下划线分隔。在接口中定义域,不能是“空白final”,但是可以被非常量表达式初始化。而且因为域是static的,所以在类的第一次被加载时就可以被初始化,这个发生在任何域首次被访问时,并且这些域不是接口的一部分,他们的值被存储在接口的静态存储区域内,比如:
<span style="font-size:14px;">public static final int NUMBER_SIZE = 5;</span>
7)接口中方法:当要实现一个接口的时候,在接口中被定义的方法必须被定义为public的,否则的话,它们将只能得到默认的包的访问权限,这样在方法被继承的过程中,其可访问权限就被降低了,这是java编译器所不允许的。
8)java只支持单继承,不像c++一样可以支持多继承,因为接口的出现,在java中实现多个接口,相当于实现了多重继承。
9)一个接口可以有多种不同的实现,在最简单的情况下,它的体现形式通常是一个接收接口类型的方法,而该接口的实现和向该方法传递的对象取决于方法的使用者
3.关于接口和抽象类的一些小问题:
1)接口可以实现接口2)类可以实现一个或者多个接口
3)接口可以继承接口
4)接口可以嵌套在类或者其他的接口之中
5)当实现某个接口的时候,并不需要实现嵌套在其内部的任何接口,而且,private接口不能再定义它的类之外被实现。
相关文章推荐
- 冒泡排序的原理及方法
- TextView显示文本控件
- UIBarButtonItemSystemItemFixedItem设定指定宽度的barButtonItem
- Java中使用正则表达式获取网页中所有图片的路径
- 初探C#
- eclipse svn知识
- 左侧导航背景颜色随机变化
- 静态网页与动态网页区别(转)
- 集群
- Android Immersive Mode (沉浸模式) 还是 Translucent Bars (透明状态栏)
- mysql服务器修改为utf8编码
- 学习Android Studio里的Gradle
- HTML与XHTML、以及HTML4与HTML5标签之间的区别简介
- 第4章 Fragment
- iOS开发-使用Storyboard进行界面跳转及传值
- linux 内核(系统)、函数的理解、宏的程序调试
- PHP - mysql_real_escape_string()与mysql_escape_string() 的区别
- 正确清理计时器和事件注册,以免引起内存泄漏
- 点击两次退出应用程序
- mysql 与 mysqli的区别