什么是抽象类,之所以说抽象就是具体的反义词喽~抽象离我们最近的距离也就是初中的时候学过的美术课,抽象画派。拿一桶画彩就这么往画布上一泼,那就是抽象。那么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. 用php切割大图片为成规则的小图

    将根据xml配置,将合并后的大图切割成一系列小图 <?php /** * 将大图片按照配置切割成一定比例的小图片 * 并按照一定规则给小图片命名 * * 使用方法: *根据guardians/g ...

  2. tem

    有时间需要整理的东西 1.登录 2.后台框架(管理界面) 3.api详细情况调用 4.具有基础操作的模块 5.session 6.操作权限控制

  3. C# url 路径转换 相对路径 转换为 绝对路径

    用C#写爬虫时候,比较实用的一项技巧. /// <summary> /// 格式化URL函数 urlX 传入相对URL objurl 传入绝对基URL 基URL 一定要带HTTP:// / ...

  4. 创建Java线程池

    线程池的作用: 线程池作用就是限制系统中执行线程的数量. 根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果:少了浪费了系统资源,多了造成系统拥挤效率不高.用线程池控制线程数量,其他线 ...

  5. WPF 窗体中的 Canvas 限定范围拖动 鼠标滚轴改变大小

    xaml代码: <Canvas Name="movBg"> <Canvas.Background> <LinearGradientBrush EndP ...

  6. js原型解析

    我们都知道javascript因为具有了继承以及变量等等一系列的特性之后才被人们认为具有一门编程语言的资格,在后续的不断发展中,js在原生的基础上扩展了基于jquery等等的库,甚至衍生了像node. ...

  7. Windowsphone 之xml序列化和反序列化的应用(WebService解析返回的数据DataSet )

    关于Xml的序列化和反序列化: 可以看这篇文章,http://www.cnblogs.com/Windows-phone/p/3243575.html WebService解析返回的数据DataSet ...

  8. 关于php的一些开源程序

    最好用的当属thinksns,目前更新到4.3.4, 社交型网站. 此网站提供大量源码,有时间可以去看看:http://down.admin5.com/

  9. Hibernate 使用说明

    Eclipse中hibernate连接mySQL数据库练习(采用的是hibernate中XML配置方式连接数据库,以后在更新其他方式的连接) Hibernate就是Java后台数据库持久层的框架,也是 ...

  10. Android特效--粒子效果之雨

    1. 单个雨点的行为 2. 完善雨点的行为和构造下雨场景 3. 在XML中定义可以控制下雨的属性 --------------------------------------------------- ...