什么是抽象类,之所以说抽象就是具体的反义词喽~抽象离我们最近的距离也就是初中的时候学过的美术课,抽象画派。拿一桶画彩就这么往画布上一泼,那就是抽象。那么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. Objective-C 内存管理与高级环境编程 阅读分享

    常用的调试私有API uintptr_t objc_rootRetainCount(id obj) _objc_autoreleasePoolPrint();//查看自动释放池中的对象 LLVM cl ...

  2. css3新增加的选择器

    css3新增加的选择器 一.属性选择器: E[attr] 只要有属性名E[attr=value] 属性名=属性值E[attr~=blue] 包含这个blue整个单词就可以E[attr^=c] 以这个字 ...

  3. 【转】Web前端开发规范文档

    规范目的: 使开发流程更加规范化. 通用规范: TAB键用两个空格代替(WINDOWS下TAB键占四个空格,LINUX下TAB键占八个空格). CSS样式属性或者JAVASCRIPT代码后加“;”方便 ...

  4. HTTP请求方式中get和post的区别

    表单提交中get和post方式的区别有5点 1.get是从服务器上获取数据,post是向服务器传送数据. 2.get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一 ...

  5. Java设计模式--单列设计模式

    设计模式:解决某一类问题行知最有效的方法.java有23种设计模式 单列设计模式: 解决一个类在内存中只存在一个对象 思路:(要保证对象的唯一性) 1.为了避免其它程序建立该对象,先禁止替他类创建改对 ...

  6. mysql的sql分页函数limit使用

    My sql数据库最简单,是利用mysql的LIMIT函数,LIMIT [offset,] rows从数据库表中M条记录开始检索N条记录的语句为: SELECT * FROM 表名称 LIMIT M, ...

  7. python文件操作汇总

    1.创建文件 f = open(filename,'w+')

  8. 343. Integer Break -- Avota

    问题描述: Given a positive integer n, break it into the sum of at least two positive integers and maximi ...

  9. [LeetCode OJ] Largest Rectangle in Histogram

    Given n non-negative integers representing the histogram's bar height where the width of each bar is ...

  10. MVVM模式应用 之加载Pivot的数据

    在Pivot布局里,在进入页面时,不想页面数据全部加载,而是移动到哪个privotItem,加载那个privotItem的值. 这时我们先给pivot绑定一个command. <phone:Pi ...