第一次,写这个,没有把图片放上来,有兴趣的可以点击连接看原文 http://note.youdao.com/noteshare?id=aecbd52b9240f23c0954e8086b848a17
一:抽象类 
 java的抽象类用关键字abstract来进行声明。抽象类只关心它的子类是否具有某种功能,并不关心功能的具体实现,功能的具体实现是由子类来负责实现的。
抽象类不能被实例化(既不能new 出来),只能用作派生类的基类而存在。
  抽象类的定义规则如下:
1.抽象类必须用abstract关键字来修饰;抽象方法也必须用abstract来修饰。
2.抽象方法只需声明,而无需实现。
3.抽象方法不能被实例化。
4.当一个类中拥有抽象方法时,则该类必须被声明为抽象类。
5.当一个子类继承抽象类时,他必须实现实现父类的所有抽象方法,反则它也只是一个抽象类,还是不能被实例化。
 
下面举例子说明:
package 抽象类;
 
/**
 * 定义一个抽象类People
 * 
 *
 */
public abstract class People {
    public void say(){
        System.out.println("具体方法");
    }
 
    /**
     * 定义一个抽象方法 职业
     */
    public abstract void profession();
}
 
上面代码创建了一个抽象类,分别有一个抽象方法 profession();跟具体方法say()。
 
若定义一个子类继承自People类,则必须实现say()方法,否则还只是抽象类。
(1)实现了所有父类的抽象方法。
 
(2)没有实现父类的所有方法的情况。(必须加关键字声明为抽象类)
抽象类不能被实例化(不然会报错)
 
二:接口
  java只支持单继承,利用接口可以实现多继承的一种效果。通常,接口中只定义了抽象方法,规划出类的共同行为,而把具体的实现留给具体的类。
接口用关键字interface来进行声明,接口是抽象方法和常量值定义的集合,从本质上讲,接口是一种特殊的抽象类,这种抽象类只包含有常量和方法的定义,而没有变量和方法的实现(不过可以在接口里面实现静态方法).
接口的常量定义部分有public、static和final属性。在接口中声明的方法具有public和abstract属性(接口的方法可以不用关键字abstrac进行声明).
接口的实现由类来实现,类通过关键字implements声明自己使用一个或多个接口。所谓实现接口,就是实现接口中声明的方法。
一个类可以实现多个接口,但必须实现所继承接口的全部方法,否则也是要被声明为抽象类。如下图所示。
上图也可以反映出接口中定义的常量具有static、final等属性,当然也是具有public属性的。
此外,接口还可以多继承。
 
三:补充
其实我觉得完全可以将抽象类,接口跟匿名类合在一起讲,匿名类是不能有名称的类,所以没办法引用他们。必须在创建时作为new语句的一部分来实现他们。
作为一个自学者,其实刚开始对匿名类这东西很不理解(当然现在也不一定完全理解了,只是个人的理解)。我觉得匿名类就是对原有的类或接口进行拓展和实现。所创建的相当于原有类的子类,所以你用上转型对象去接收的时候会发现用上转型对象调用不到匿名类里面自己新增的成员变量和方法。
匿名类使用最多的我想大概就是swing窗体的时候了吧。在为控件注册点击事件的时候常常用到匿名类。如:
这边就使用匿名类实现了接口WindowListener来注册窗体的相关事件。注意的是这边是实现接口所以必须实现接口的全部方法,否则根本new 不出来(因为是抽象类)。这样会变得很麻烦,因为我们要重写这个接口的全部未实现的方法。因此,这边就引入了事件适配器,如WindowAdapter。事件适配器里面已经有了相关方法的空实现(方法体里面什么都没有,不等同于抽象类),因此我们只需要重写我们关心的某几个方法。
 
在自学的路上,遇到好多挫折,曾经也想放弃但又舍不得放弃。我坚信好记性不如烂笔头,也希望和大家共同进步。第一次写这种,希望大家能多多指出我的错误,谢谢大家。新的一年,继续前进。
 
 
 
 
 

浅谈java抽象类和接口的更多相关文章

  1. 浅谈Java抽象类

    什么是抽象类?这名字听着就挺抽象的,第一次听到这个名字还真有可能被唬住.但是,就像老人家所说的,一切反动派都是纸老虎,一切有着装x名字的概念也是纸老虎.好吧,我们已经从战略上做到了藐视它,现在就要战术 ...

  2. 浅谈Java中接口与抽象类的异同

    浅谈Java中接口与抽象类的异同 抽象类和接口这两个概念困扰了我许久,在我看来,接口与抽象类真的十分相似.期间也曾找过许许多多的资料,参考了各路大神的见解,也只能是简简单单地在语法上懂得两者的区别.硬 ...

  3. 浅谈Java接口(Interface)

    浅谈Java接口 先不谈接口,不妨设想一个问题? 如果你写了个Animal类,有许多类继承了他,包括Hippo(河马), Dog, Wolf, Cat, Tiger这几个类.你把这几个类拿给别人用,但 ...

  4. 浅谈JAVA集合框架

    浅谈JAVA集合框架 Java提供了数种持有对象的方式,包括语言内置的Array,还有就是utilities中提供的容器类(container classes),又称群集类(collection cl ...

  5. 浅谈Java的集合框架

    浅谈Java的集合框架 一.    初识集合 重所周知,Java有四大集合框架群,Set.List.Queue和Map.四种集合的关注点不同,Set 关注事物的唯一性,List 关注事物的索引列表,Q ...

  6. 浅谈Java的默认和静态方法

    目录 浅谈Java的默认和静态方法 Java新增默认方法有啥用 Java新增的静态方法有啥用 浅谈Java的默认和静态方法 允许在接口中声明默认方法和静态方法,是JDK1.8新增的特性.存在即合理,两 ...

  7. 浅谈Java中的深拷贝和浅拷贝(转载)

    浅谈Java中的深拷贝和浅拷贝(转载) 原文链接: http://blog.csdn.net/tounaobun/article/details/8491392 假如说你想复制一个简单变量.很简单: ...

  8. !! 浅谈Java学习方法和后期面试技巧

    浅谈Java学习方法和后期面试技巧 昨天查看3303回复33 部落用户大酋长 下面简单列举一下大家学习java的一个系统知识点的一些介绍 一.java基础部分:java基础的时候,有些知识点是非常重要 ...

  9. 浅谈Java中的深拷贝和浅拷贝

    转载: 浅谈Java中的深拷贝和浅拷贝 假如说你想复制一个简单变量.很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(bool ...

随机推荐

  1. 执行shell出现bad interpreter

    执行shell出现bad interpreter:No such file or directory linux执行shell出现bad interpreter:No such file or dir ...

  2. windows Service

    用c#中创建一个windows服务非常简单,与windows服务相关的类都在System.ServiceProcess命名空间下. 每个服务都需要继承自ServiceBase类,并重写相应的启动.暂停 ...

  3. hive数据操作

    mdl是数据操作类的语言,包括向数据表加载文件,写查询结果等操作 hive有四种导入数据的方式 >从本地加载数据 LOAD DATA LOCAL INPATH './examples/files ...

  4. 【基础知识】UML基础

    http://www.ibm.com/developerworks/cn/rational/r-uml/

  5. python莫名其妙的yield, yield from, yield.send

    练了几行代码, 慢慢找感觉. TASK,多线程,异步,很多地方都用到的呢. #!/usr/bin/env python # -*- coding: utf-8 -*- import time from ...

  6. 【转】算法杂货铺——k均值聚类(K-means)

    k均值聚类(K-means) 4.1.摘要 在前面的文章中,介绍了三种常见的分类算法.分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应.但是很多时 ...

  7. 【MongoDB】4.MongoDB 原子修改器的 极速修改

    文档转自:http://blog.csdn.net/mcpang/article/details/7752736 对于文档的更新除替换外,针对某个或多个文档只需要部分更新可使用原子的更新修改器,能够高 ...

  8. 【Android】achartengine的柱状图和饼状图的使用

    本文介绍了android中如何使用achartengine绘制饼图和柱状图,请分别尝试饼图和柱状图,曲线图. 先看效果图: 先看看获取数据: Workbook workbook = Workbook. ...

  9. Webpack 入门指迷--转载(题叶)

    最近看到这个东西,一头雾水.看了一些资料了解了Webpack概念,大体是webpack 是一个模块绑定器,主要目的是在浏览器上绑定 JavaScript 文件. 看到题叶写的一篇介绍,写的很好,转载连 ...

  10. JQuery上传插件Uploadify使用详解

    本文转载http://www.cnblogs.com/oec2003/archive/2010/01/06/1640027.html Uploadify是JQuery的一个上传插件,实现的效果非常不错 ...