27
2017
09

java之接口与抽象

在这之前,我想顺便讲讲public、private、protected、static、final,(native先不说,反正也暂时用不到)

native:http://blog.csdn.net/funneies/article/details/8949660
其实它们都是修饰变量或方法或类的关键字
第一首先是这么区分一下,public、private、protected是控制访问权限的,而static和final却不是。
所以它们三类是可以一起混用的。
public、private、protected
static:http://www.cnblogs.com/starhu/p/5150241.html,定义之初,其实就是可以在类中调用,就这么简单。
final:定义事物,定义之后不可更改。若定义变量,变量不可再赋值;定义类,类不可以被继承;定义方法,方法不可以被重写。
http://lavasoft.blog.51cto.com/62575/18771/
什么是抽象方法呢,其实简单点来说,就是方法的声明,方法名称后面不包括实现体{};前面添加abstract只不过视为了在抽象类中让代码进行识别和规范。
直接将个人理解:
1.从概念和设计的角度来分析:
类是用来描述一个实体的;
抽象类是用来描述一个一群实体的共同属性的,但是本身并没有这个实体真正存在,就像狗和猫都属于动物,而动物这个名字其实是不存在的,所以可以把其比作是抽象类。
而接口呢,其实是特殊的抽象类,就是把抽象类切割开来,更加的灵活。
这时候,肯定要说,继承的概念了,继承父类和继承抽象类,继承父类时把父类所有的方法都继承过来了,随便都可以用啊,但是继承抽象类却需要重写方法;为什么要搞这么复杂的概念呢。就直接父类继承子类不好吗,为什么要出来抽象类呢,其实还是在设计上的思路的不一样,父类其实是一个具体的实体类,可以被实例化,确实存在,而抽象类不能实例化,只是单独的提供一群类的共性,然后再具体区分继承。所以虽然我们平常用这些概念时显得很随便,但是一定还是要按照这种思路来设计东西,否则也就违背了java的设计初衷,还不如用c去开发呢。子继承父时一定是全部需要继承的关系,而继承抽象类时是为了有个共性伸张。
这就是普通类转到抽象类的原理。就是为了强制不能实例化,以及强制子类必须实现方法.

至于接口,接口是对动作的抽象,抽象类是对本质的抽象。
抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它。所以,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口)。

知道了原理,其实它的语法也就不是难理解了。
所谓语法,无非是这么几条
1.有抽象方法的一定是抽象类,抽象类可能没有抽象方法
2.抽象方法默认声明为public abstract,所以加不加都OK,
3,若子类非抽象方法时,继承抽象方法一定要全部实现抽象方法
4.接口中所有的方法都为抽象方法。

参考:http://blog.csdn.net/csdn_aiyang/article/details/71171886
http://blog.csdn.net/tsuliuchao/article/details/5423026
http://blog.csdn.net/qq_25935169/article/details/52443326
http://www.cnblogs.com/beanmoon/archive/2012/12/06/2805221.html
http://www.importnew.com/12399.html
http://blog.csdn.net/zhangleigogoing/article/details/53793183

变量的定义
http://blog.csdn.net/xingfeng0501/article/details/6875685

抽象类的由来,与子类有什么区别呢?
抽象类的好处:http://bbs.csdn.net/topics/50332629
1.在思想上,抽象类是一个共性,不存在这样的一个实体,只是一个概念,所以直接用父类来表示是不合适的,用抽象类来表示正好
2.从代码实现上将,抽象类不能实例化,这样的话就确保没有这个实体生成,满足抽象的思想。而且定义了抽象方法,就确保子类继承时,必须全部重新实现,这种规范规避了一些错误。

http://bbs.csdn.net/topics/50332629

上一篇:一步步实现三方操作功能模块封装(一),三方登录 下一篇:win 10使用模拟器蓝屏解决方案