abstract:抽象

是用来修饰抽象类和抽象方法的

那么什么抽象,抽象有究竟有什么用呢??

我们知道,“类”是某一类具有相同特征或行为的物事,是将这些物事特征向上抽取得来的;“父类”也是子类不断向上抽取而来的。

比如人这个“类”,都有说话的功能;人“类”下有很多子类,如“中国人”、“德国人”、“法国”人,其都有各自己的语言,即说话功能各不相同。

也就是说子类的继承父类“说话”功能的同时,都有各自己特殊的说话功能,用代码表示也就是“子类说话功能会覆盖父类说话功能”。

在这样的情况下,在父类中定义说话功能就显得多余了,因为其被所有子类覆盖。

此时,父类的说话功能内容就要以去除,只保留功能定义,并用abstract(抽象)修饰。

用代码表示如下:

public class AbstractDemo {

    public static void main(String[] args) {
new Chinese().speak(); //建立子类对象,并调用方法
}
} // 人都有说话的功能
abstract class People {
abstract void speak(); // 抽象方法只定义基本功能定义,不写功能主体。主体部分由子类复写完成,由子类实现。
} // 中国人说中文
class Chinese extends People {
void speak() {
System.out.println("speak Chinese");
} } // 德国人说德语
class German extends People {
void speak() {
System.out.println("speak German");
}
}

抽象类中的抽象方法,是所有子类所必备具备的,只是各子类的实现方式不一样。父类只提供基本的功能,具体怎么实现则由各子类完成。

功能不确定的,就可以用抽象来

抽象类的特点:
1、抽象方法一定被定义在抽象类串
2、抽象方法、抽象类必须被abstract关键字修饰
3、抽象方法不能用new创建对象,因为调用抽象方法没有意义
4、抽象类中的抽象方法要被使用,必须由子类复写其所有的抽象方法后,再建立子类对象调用。如果子类只复写了部分抽象方法,那些该子类一个抽象类

抽象类可以有抽象方法,也可以有非抽象方法;也可以没有抽象方法。

父类中的抽象方法,在子类中必须复写。达到父类强制子类完成其功能。

抽象类与一般类的区别:

无太大的区别,该如何描述事物就如何描述。只不过,该事物中出现了一些不确认的东西。这些不确认的东西,也是访一事物的功能,需要确认体现,但无法定义功能主体。

抽象类比一般类多了抽象方法。

抽象类不能被实例化。

abstract抽象的更多相关文章

  1. 抽象鸡类 abstract(抽象) base(基础) class(类型)

    # --> ''' class interface 接口: 建立关联的桥梁, 方便管理代码 (python中没有接口语法) 接口类: 用来定义功能的类 为继承它的子类提供功能 该类的功能法方法一 ...

  2. php中关于抽象(abstract)类和抽象方法的问题解析

    在面向对象(OOP)语言中,一个类可以有一个或多个子类,而每个类都有至少一个公有方法作为外部代码访问的接口.而抽象方法就是为了方便继承而引入的,现在来看一下抽象类和抽象方法分别是如何定义以及他们的特点 ...

  3. java抽象、接口 和final

    抽象 一.抽象类:不知道是具体什么东西的类. abstract class 类名 1.抽象类不能直接new出来. 2.抽象类可以没有抽象方法. public abstract class USB { ...

  4. java中abstract详解

    Abstract(抽象)可以修饰类.方法 如果将一个类设置为abstract,则此类必须被继承使用.此类不可生成对象,必须被继承使用. Abstract可以将子类的共性最大限度的抽取出来,放在父类中, ...

  5. 基础知识系列☞Abstract和Virtual→及相关知识

    转载地址→http://www.cnblogs.com/blsong/archive/2010/08/12/1798064.html 在C#的学习中,容易混淆virtual方法和abstract方法的 ...

  6. 尚学堂 JAVA Day13 abstract 关键字

    Abstract (抽象的) 这是一个关键字. 可以且只可以 用来修饰 <类> <方法>. 1---Abstract 类 如:Animal,可以被理解一个抽象的类.动物嘛,只是 ...

  7. 三大修饰符static,final,abstract,接口和抽象类的区别

    package com.cityhero.test; public class ThreeModifier { //static静态的 // 概念:static可以修饰方法和属性,被static修的方 ...

  8. 面向对象_06【抽象类:abstract、接口:interface、实现:implements】

    抽象类:abstract抽象:没有足够的描述功能,事物不具体的描述,却又有共性. 特点: 1,方法只有声明没有实现时,该方法就是抽象方法,需要被abstract修饰,抽象方法必须定义在抽象类中,该类也 ...

  9. 逆袭之旅.DAY07东软实训..封装~继承~抽象~final

    2018年7月3日.逆袭之旅DAY07 package day0703.exam1; /** * 狗狗类 使用权限修饰符private和public进行封装 * @author Administrat ...

随机推荐

  1. Java第11章笔记

    什么是类,什么是对象 举例说明什么是类,什么是对象? 一句话:万物皆对象 类的概念:类是具有相同属性和服务的一组对象的集合. 1.为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和服务两个部分 ...

  2. Django框架之验证码生成示例

    一.生成随机颜色的图片 1)前端代码展示 <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  3. 模块and包

    一.模块 1.import 加载的模块四个通用类别 1.使用python编写的py文件 2.已被编译为共享库或者DLL或者C\C++的扩展 3.包好一组模块的包 4.使用c编写并连接到python解释 ...

  4. Web 开发

    Django(发音:[`dʒæŋɡəʊ]) 是一个开放源代码的Web应用框架,由Python写成.采用了MTV的框架模式,模型(Model).模板(Template)和视图(Views).

  5. tomat修改启动路径

    https://blog.csdn.net/axela30w/article/details/76546735

  6. java equals重写

    @Override    public boolean equals(Object obj) {        if(this == obj) {            return true;   ...

  7. 几种修改Linux主机名的方法

    在安装一些系统时,需要修改hostname,比如安装Hadoop时需要修改主机名,而且主机名不能包含下划线. 实际上,主机名分三种(命令hostnamectl或hostnamectl status可查 ...

  8. LRU ,LRUW,CKPT-Q

    原文出处:http://www.itpub.net/thread-1631537-1-1.html    http://www.linuxidc.com/Linux/2012-07/66767.htm ...

  9. std::set 中内部元素有序条件删除的理解

    std::set 中内部元素有序条件删除的理解 1. std::set中的元素是有序排列的 注意:Set集合中的元素通过iterator的引用,但是不能修改. 元素排序: (1)元素中实现比较oper ...

  10. poj 1753 2965

    这两道题类似,前者翻转上下左右相邻的棋子,使得棋子同为黑或者同为白.后者翻转同行同列的所有开关,使得开关全被打开. poj 1753 题意:有一4x4棋盘,上面有16枚双面棋子(一面为黑,一面为白), ...