什么是抽象类,之所以说抽象就是具体的反义词喽~抽象离我们最近的距离也就是初中的时候学过的美术课,抽象画派。拿一桶画彩就这么往画布上一泼,那就是抽象。那么java世界当中什么是抽象呢?我们再拿动物还有狗的这个例子来讲吧,因为这个非常的好理解。比如说,你可以说狗吃饭吧,然后小狗狗就去吃饭了。那么你能说,动物你去吃饭吧?这个就搞的我们有点迷糊了,动物怎么吃饭,动物是一个类的概括。就向你去菜市场买鸡吃,你冲老板说:我来买个动物。动物只是个概念而不是一个具体到某一个具体的类别的动物,这里动物这个概念就是抽象的,我们并不能具体知道,别人的所指是一个具体的什么东西。还有,我们在一个类当中,比如拿动物这个类来说吧,定义一个吃的方法,但是这个方法,并没有必要具体的定义实现细节,因为动物一个睡觉的动作是不确定的,马可能会站着睡,狗趴着睡,各种睡法,你根本不能够确定具体的实现细节,那么这里直接抽象就好了,怎们抽象,那么这里就引入了抽象类和方法的关键字:abstract。上述例子用java代码来描述的话就是:

 abstract class Animal
{ abstract void eat(); } class Dog extends Animal
{ void eat()
{ System.out.print("I eat grass and meat"); } }

这里有几点需要注意的事情:

1、抽象方法被abstract关键字修饰之后,就不能再有方法体了。

2、一个类当中如果有一个方法是抽象的,那么这个类必须是抽象的;但是,如果一个类是抽象的,那么这个类中不一定有抽象的方法。

3、如果一个类继承了一个父类,但是这个父类当中有一个方法是抽象的,如果这个类没有重新覆盖并且实现这个方法体,那么这个类也是抽象的。

4、抽象类不能够被实例化。当我们试图去实例化一个抽象类的时候,会报错。

抽象类细节:

1、抽象类可以有构造函数么?

  可以,因为虽然构造方法抽象类自身是不能够使用的,但是可以供其子类来使用。

2、抽象类可以不定义抽象方法么?

 可以。这样的目的是防止,抽象类被直接使用。

3、抽象关键字不可以和哪些关键字共存?

  private、final、static

4、抽象类和一般类的区别?

  一般类可以被实例化、抽象类不能够被实例化;

  一般类当中只能有具体方法,不能够有抽象方法;

  抽象类必须被abstract关键字修饰

  抽象类必定是父类

  一般类是对一个事物充分的描述,而抽象类可能是非充分的描述

5、抽象类一定是个父类么?

  肯定是个父类,如果抽象类想被使用的话,他必须被继承且实现其中所有的抽象方法。

java学习面向对象之抽象类的更多相关文章

  1. Java学习---面向对象的远程方法调用[RMI]

    基础知识 分布式计算是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果. 常见的分 ...

  2. java学习面向对象之异常之一

    一.异常的概述: 什么是异常?在我们编写java程序的时候,会出现一些问题,比如内存溢出啊或者数组索引超出最大索引啊,这些编程当中出现的这些个问题就是异常.但是异常也分为可以处理的和不可以处理的.比如 ...

  3. [Java学习]面向对象-抽象类;接口

    抽象类 语法 public abstract class A{ } 定义 抽象类无法实例化.但抽象类有构造方法,在子类创建对象时用. 抽象类中可以定义抽象方法public abstract void ...

  4. Java 基础 面向对象和抽象类

    面向对象变量 局部变量和成员变量区别 区别一:定义的位置不同 定义在类中的变量是成员变量 定义在方法中或者{}语句里面的变量是局部变量 区别二:在内存中的位置不同 成员变量存储在对内存的对象中 局部变 ...

  5. java学习面向对象之多态

    如何理解多态,让我们举个例子来描述一下,因为单纯的说多态大家可能不理解: abstract class Animal { ; abstract void eat(); public void run( ...

  6. java学习面向对象之接口

    上一节当中我们说道抽象类,抽象类当中的方法可以是抽象的也可以是非抽象的,那么当抽象类中所有方法都是抽象的时候,我们就可以把它重新定义为接口.代码示例: abstract class Animal { ...

  7. java学习--面向对象

    对象及类的概念 对象是java程序的核心,在java程序中“万事万物皆对象” 对象可以看成是属性和方法的封装体 类是用来创建同一类型的对象的模板,在一个类中定义了该类对象所应具有的属性和方法 J2SD ...

  8. Java学习4之抽象类

    在面向父类编程的过程中,抽象出来的父类具有一般化特质.父类函数只是一个抽象化的概念,只是为了在面向对象编程时统一接口服务. example: 有时父类会定义出一些无法实现的行为: public voi ...

  9. Java学习 面向对象(下)——Java疯狂讲义th4

    面向对象(下) [TOC] 包装类 通过包装类可以把8个基本类型的值包装成对象使用. 自动拆箱.自动装箱 把字符串类型值转换成基本类型的值: 包装类的 parseXxx(String s)静态方法 包 ...

随机推荐

  1. linux下的openoffice安装和服务自启动

    openoffice下载并安装 wget http://sourceforge.net/projects/openofficeorg.mirror/files/4.1.1/binaries/zh-CN ...

  2. Spring AOP体系学习总结:

    二.Spring AOP体系学习总结: 要理解AOP整体的逻辑需要理解一下Advice,Pointcut,Advisor的概念以及他们的关系. Advice是为Spring Bean提供增强逻辑的接口 ...

  3. jquery.qrcode和jqprint的联合使用,实现html生成二维码并打印(中文也ok)

    在公司的生产现场中,常常会在一些部品或设备上贴上二维码,用于扫描录入数据,免去手动输入的麻烦. 以前曾经做过winform的程序,生成二维码,并打印出来,使用的是zxing的类库, 但是如果二维码是附 ...

  4. 9张思维导图学习Javascript(转)

    思维导图小tips:思维导图又叫心智图,是表达发射性思维的有效的图形思维工具 ,它简单却又极其有效,是一种革命性的思维工具.思维导图运用图文并重的技巧,把各级主题的关系用相互隶属与相关的层级图表现出来 ...

  5. js判断手机端操作系统(Andorid/IOS)

    非常实用的js判断手机端操作系统(Andorid/IOS),并自动跳转相应下载界面 androidURL = "http://xxx/xxx.apk"; var browser = ...

  6. css 导航条 布局

    导航条(简单易用的导航) <!DOCTYPE html> <html> <head> <style> ul { list-style-type:none ...

  7. 关于打开ILDASM的方法

      1.通过VisualStudio在开始菜单下的Microsoft Visual Studio 2008/Visual Studio Tools/中的命令提示符中输入ildasm即可 2.将其添加至 ...

  8. java中的递归方法

    一.含义 递归算法是一种直接或间接地调用自身的算法.在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解. 二.例子 99乘法表的例子 1:普通实现99乘法表太 ...

  9. 安装cocoaPod 的问题

    APPLEdeiMac:cocoapod案例 apple$ pod install Analyzing dependencies [!] The dependency `Reachability (~ ...

  10. html-----002

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...