接触java的时间不是很长,以前对抽象类和接口的定义和区别也是模糊不清,最近拿起学校的教程读了起来,也参阅了网上的博客大神理解和总结,于是决定自己按照自己的理解来总结一下。

    抽象类(半成品)

    一般形式:

      protected abstract class person(classname){

        ......

      }

  抽象方法:就是用abstract关键字声明的方法。例如:

  abstarct void walk(); 这个方法就是一个抽象方法。

  这里我们注意到,这个方法跟一般的方法是不同的,它没有方法体,亦即是{},我们只需要对其进行声明,而不去实现它。但是如果我们不实现这个方法,那还声明干什么呢?不是吃饱了没事干吗?其实不然,声明抽象方法的目的是为了继承(extends)比 如有两个类,一个父类,一个子类,在父类中实现这个方法是毫无意义,但是在子类中实现这个方法是必须的,那么此时就可以把 这样的方法声明为抽象方法了。

  一般情况下,如果一个类含有抽象方法,那么这个类就一定是抽象类;但是反之,如果一个类是抽象类,它不一定就有抽象方法。

  


  抽象类和普通类的区别:

  大多数的情况下,抽象类和普通类没什么区别,比如说同样拥有成员变量、成员方法以及构造方法,但是和普通类相比还是有以下的几点不同:

     1. 抽象类的声明时关键字必须为 public或者是protected,如果不是这样,那么其子类就不能对其进行继承,既然抽象类不继承,那还有存在的意义?而且,默认不写的情况下,其默认的关键字是public 。

     2 .抽象类里面不能 new 对象。其原因是这个类是抽象出来的,根本不存在的类,实例化一个根本不存在的东西是没有意义的。

     3 .如果一个类继承一个抽象类,并且这个类里面存在抽象方法。那么子类必须要做到

    1)子类一定要对父类的抽象方法进行实现

 

               

    2 )如果不实现父类的抽象方法,那么必须要将子类也声明为抽象类

  

                       

    


 

     接口(极端的抽象类)

     一般形式:

    

      public interface student(interfacename) {
          ......

        }

     和抽象类的存在差不多,也是为了子类的继承,但是接口的继承不叫做继承而是叫做实现,用implements关键字代替了extends 关键字,而且和继承不同,接口可以多现,但继承只能是单继承

       使用接口时,有以下几点需要注意:

   1. 接口中的定义:

    1)公开的常量( public static final )

       2)公开的抽象方法(亦即是不能再使用protected) 

       3)公开的内部类、内部接口

    2 .一个类可以实现多个接口,如下,这是允许的。

class A implements X,Y,Z {

}


      抽象类和接口的不同:

      方           法:抽象类可以包含除开抽象方法外的其他方法,但是接口中只存在抽象方法

      变           量:接口中的成员变量的类型都是public static final 类型,但是抽象类的成员变量类型没有限制。

      子类和父类:抽象类的继承是单继承,接口的实现是多实现。

      静           态:抽象类可以有静态方法和代码块,但是接口中不允许存在。

    

    

                                  如若有误,烦请指出,不胜感激!!!

Java 基础学习总结(一)抽象类和接口的更多相关文章

  1. Java基础学习笔记(三) - 抽象类和接口

    一.抽象类 没有方法主体的方法称为抽象方法,包含抽象方法的类就是抽象类. Java中使用 abstract 关键字修饰方法和类,抽象方法只有一个方法名,没有方法体. public abstract c ...

  2. 第二十八节:Java基础-进阶继承,抽象类,接口

    前言 Java基础-进阶继承,抽象类,接口 进阶继承 class Stu { int age = 1; } class Stuo extends Stu { int agee = 2; } class ...

  3. Java基础系列4:抽象类与接口的前世今生

    该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 1.抽象类: 当编写 ...

  4. 夯实Java基础(十)——抽象类和接口

    转载自:http://cmsblogs.com/ 该博主的网站上干货非常!非常!非常多(说三遍),强烈推荐大家前去学习. 接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法 抽象类与接口是 ...

  5. Java基础(四)——抽象类和接口

    一.抽象类 1.介绍 使用关键字 abstract 定义抽象类. abstract定义抽象方法,只有声明,不用实现. 包含抽象方法的类必须定义为抽象类. 抽象类中可以有普通方法,也可以有抽象方法. 抽 ...

  6. Java基础学习总结(2)——接口

    一.接口的概念 JAVA是只支持单继承的,但现实之中存在多重继承这种现象,如"金丝猴是一种动物",金丝猴从动物这个类继承,同时"金丝猴是一种值钱的东西",金丝猴 ...

  7. java基础知识回顾之抽象类和接口的区别

    /* 抽象类和接口的异同点: 相同点: 都是不断向上抽取而来的. 不同点: 1,抽象类需要被继承,而且只能单继承. 接口需要被实现,而且可以多实现. 2,抽象类中可以定义抽象方法和非抽象方法,子类继承 ...

  8. java基础学习笔记五(抽象类)

    java基础学习总结——抽象类 抽象类介绍

  9. Java基础学习笔记总结

    Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...

  10. 转载-java基础学习汇总

    共2页: 1 2 下一页  Java制作证书的工具keytool用法总结 孤傲苍狼 2014-06-24 11:03 阅读:25751 评论:3     Java基础学习总结——Java对象的序列化和 ...

随机推荐

  1. Willem, Chtholly and Seniorious

    Willem, Chtholly and Seniorious https://codeforces.com/contest/897/problem/E time limit per test 2 s ...

  2. FortiGate数据流分析 debug flow

    1.工具说明 在防火墙部署中,经常会遇到防火墙接收到了数据包,但并未进行转发.可以通过diagnose debug flow 命令来对数据包的处理过程进行跟踪,可以清晰查看数据包再各个功能模块内的处理 ...

  3. [leetcode]366. Find Leaves of Binary Tree捡树叶

    Given a binary tree, collect a tree's nodes as if you were doing this: Collect and remove all leaves ...

  4. how to adjust PKG_CONFIG_PATH environment-variable

    PKG_CONFIG_PATH is a environment variable that specifies additional paths in which pkg-config will s ...

  5. 64位Redhat系统应用(c++代码)搭建-使用informix和g++编译

    这篇博客很有必要写下来,记录我在一个比较原生的Linux系统上搭建一套应用所遇到的各种问题和各种坑. 关于这套应用,算是我离职前的一个项目,不完成的话没有办法交差,同时,这个项目也比较紧,合作行一直在 ...

  6. web安全之机器学习入门——1.环境搭建

    前置知识 算法和数据的辩证关系:算法和数据是机器学习解决实际问题不可或缺的两大因素.早期机器学习十分依赖特征提取,随着发展,人们发现通过增加训练数据量,让机器从大量基础特征中可以自动关联出潜在关系,自 ...

  7. 第一个VS2015 Xaramin Android项目(续)

    上文说到已经第一个 App已经可以运行,但是并不能调试! 经过细心发现,我察觉到VS刚开始进入了调试模式,但是一闪而过.也就是说调试失败了,此时需要等待一段时间才能打开此App,如果立即打开App 会 ...

  8. xbee无线通讯终端

    无线数传电台支持DIGI全系列无线数传模块,包括有xbee/xbee PRO S1.xbee/xbee PRO S2C.xbee WIFI.xbee PRO S3B.xbee/xbee PRO SX( ...

  9. 别人的Linux私房菜(9)文件与文件系统的压缩

    www网站利用文件压缩技术进行数据传输,提升网络带宽. 压缩命令gzip与显示zcat.zmore.zless.zgrep -c将压缩的数据显示到屏幕上 -d解压缩 -v显示原文件/压缩文件的压缩比等 ...

  10. Java中equals方法简略描述

    所有类都从Object中继承了equals方法,源码:public boolean equals(Object o){return this == o;} 直接判断this与o本身是否为同一对象(是否 ...