精华内容
下载资源
问答
  • 主要介绍了PHP中抽象类和抽象方法概念与用法,较为详细的分析了php中抽象类与抽象方法的关键字、定义、使用方法与相关注意事项,需要的朋友可以参考下
  • 主要介绍了Java抽象概念与用法,结合实例形式分析了java抽象类的概念、方法、特点及使用方法,需要的朋友可以参考下
  • 大脑抽象思维概念矢量适用于抽象思维设计的AI格式素材。
  • 抽象类的概念和作用

    万次阅读 多人点赞 2018-07-08 12:07:46
    一、抽象类的概念和作用1.抽象的定义  抽象是把多个事物的共性的内容抽取出来,本质就是把我们关注的内容抽取出来。(比如:宝马、奔驰都属于汽车,汽车是抽象出来的概念)2.抽象类  Java中可以定义没有方法体的...

    一、抽象类的概念和作用
    1.抽象的定义
        抽象是把多个事物的共性的内容抽取出来,本质就是把我们关注的内容抽取出来。(比如:宝马、奔驰都属于汽车,汽车是抽象出来的概念)
    2.抽象类
        Java中可以定义没有方法体的方法,该方法由其子类来具体的实现。该没有方法体的方法我们称之为抽象方法,含有抽象方法的类我们称之为抽象类。
    3.抽象方法的特点
        (1)只有方法头没有方法体的方法称之为抽象方法。(即只有方法的声明,没有方法的实现)
        (2)抽象方法用abstract关键字来修饰。
        (3)抽象方法代表一种不确定的操作或行为。(由子类去具体实现)
        (4)抽象方法不能被调用。
    4.抽象类的特点
        (1)定义中含有抽象方法的类叫做抽象类。
        (2)抽象类用abstract关键字来修饰。
        (3)抽象类代表一种抽象的对象类型。
        (4)抽象类不能实例化。
        (5)抽象类中可以有具体方法,可以没有抽象方法。(也就是说一个类中只要有一个方法是抽象方法那么这个类一定是抽象类,反过来,一个抽象类中可以没有抽象方法,可以带有具体
        实现的方法)
        (6)一旦一个类中有抽象方法,那么这个类必须也要用abstract来修饰,代表这个类是抽象类,它是不能被实例化的。
    如:
        ① A是一个抽象类
        public abstract class A{
            public void methodA(){
                System.out.println("test");
            }
        }

        ② public abstract void methodB();
        用abstract来修饰的方法称之为抽象方法,抽象方法的特点就是只有方法的声明,没有方法的实现。这里不能这样写:public abstract void methodB(){},因为写了大括号就代表有
    方法的实现,只不过这是一个空实现,即没有大括号的才称为方法的声明。

    public abstract class Employee {
    private int number;
    private String name;
    private double salary;

    public Employee(int number, String name, double salary) {
    this.number = number;
    this.name = name;
    this.salary = salary;
    }

    // 抽象方法的声明(抽象类中不推荐放具体实现的方法)
    public abstract void work();
    }
    // 一旦一个类继承了抽象类,那么这个类要么实现抽象类中的抽象方法,要么继续抽象下去。
    public class JavaTeacher extends Employee {


    public JavaTeacher(int number, String name, double salary) {
    super(number, name, salary);
    }

    @Override
    public void work() {
    System.out.println("上java课");
    }

    }
    public class Leader extends Employee {
    private double allowance;

    public Leader(int number, String name, double salary, double allowance) {
    super(number, name, salary);
    this.allowance = allowance;
    }

    @Override
    public void work() {
    System.out.println("培训新员工");
    System.out.println("设计课程体系");
    }

    }
    public class EmployeeDemo {
    public static void main(String[] args) {
    JavaTeacher javaTeacher = new JavaTeacher(1001, "张三", 10000);
    // 父类的引用变量可以引用其子类对象(这里抽象类Employee也是一个父类,通过父类的引用变量引用值实现多态),所以也可以这么写:
    // Employee javaTeacher = new JavaTeacher(1001, "张三", 10000);下同。
    javaTeacher.work();

    Leader leader = new Leader(101, "李四", 20000, 50000);
    leader.work();

    // 抽象类不能实例化
    // Employee employee = new Employee(1,"小王",2000,50000);
    }

    }

    备注:抽象类为什么不能实例化?

    首先抽象类不能实例化是一个java的语法规范。

    抽象类中是可以包含抽象方法,不是必须。如果一个抽象类没有一个抽象方法,那么他和一个普通java类就没有任何区别了,也就是说,在这种情况下没有abstract修饰都是一样的。定义了一个包含抽象方法的抽象类,其子类在继承自该抽象类的时候,子类就必须实现父类的所有抽象方法。之所以在java中存在这样一个语法规范,就是为了定义这种类型结构来解决生活中这样的一些实际问题。

    你看过周星驰的电影没,就是那个去水果店,揪住老板说要一斤水果!老板问他你要什么水果,他说他就要水果!这个水果就是抽象类,你如果能在水果店买到一斤叫水果的水果,那就能实例化一个抽象类。要跟现实生活联系起来。

    5.模板方法模式

    (1)定义:一个模板方法用一些抽象的操作定义一个算法,而子类将重定义这些操作以提供具体行为

    (2)意图:定义了在一个操作中的一个算法框架,把一些步骤推迟到子类去实现。模板方法模式让子类不需要改变算法结构而重新定义特定的算法步骤。

    public class TemplateDemo {
        public static void main(String[] args) {
            DBTeacher dbTeacher = new DBTeacher();
            dbTeacher.work();
            System.out.println("===========我是一道闪电=========");
            CTeacher cTeacher = new CTeacher();
            cTeacher.work();
        }
    }

    abstract class Teacher{
        // 老师工作的方法是一个流程,也可以认为是一个模板方法(即模板方法中的每一个步骤是固定的,老师授课按这个模板方法执行就可以了)
        public void prepared() {
            System.out.println("准备好白板笔");
            System.out.println("打开投影仪");
        }
        
        public void end() {
            System.out.println("关闭投影仪");
            System.out.println("锁教室门");
        }
        
        /**
         * 这是一个抽象方法由其子类去实现
         */
        public abstract void teaching();
        
        public void work() {
            // 授课前准备
            prepared();
            // 进行授课
            teaching();
            // 授课结束
            end();
        }
    }

    class DBTeacher extends Teacher{
        // 实现父类抽象的方法
        @Override
        public void teaching() {
            System.out.println("打开Oracle软件");
            System.out.println("书写sql指令");
            System.out.println("优化sql指令");
        }
    }

    class CTeacher extends Teacher {
        // 实现父类的抽象方法
        @Override
        public void teaching() {
            System.out.println("打开VM软件");
            System.out.println("书写C指令");
            System.out.println("调试C程序");
        }
    }

    展开全文
  • 抽象数据类型概念

    千次阅读 2018-12-06 19:10:33
    数据类型与抽象数据类型的异同 首先数据结构定义为一个二元组 Data_Stucture(D,S),即两个集合,D是数据元素的集合,而S是数据元素之间或多个关系的集合 抽象数据类型其实本质上就是数据类型,涉及数据的存储以及如何...

    数据类型与抽象数据类型的异同
    首先数据结构定义为一个二元组 Data_Stucture(D,S),即两个集合,D是数据元素的集合,而S是数据元素之间或多个关系的集合
    抽象数据类型其实本质上就是数据类型,涉及数据的存储以及如何用存储来反映数据元素之间的关系,它定义的为一个三元组(D,S,P),P是定义的一组针对存储的数据操作(如插入,删除,排序等).所以D是元素的集合,而S表示的这些元素之间关系的集合,而P表示的是对这些数据进行操作的集合
    抽象数据类型本质上和数据类型是一个概念,但是其特征是使用与实现分离,实行封装和信息
    隐蔽,(独立于计算机)

    注意区分数据类型以及抽象数据类型
    多行数据类型这种数据类型我们在这不做深入的了解,只需要知道它是值的成分不确定的数据类型
    抽象数据类型如何表示和实现
    抽象数据类型可以使用固有的数据类型来进行实现,关于具体实现的步骤,我们在后面的博客中做详细的解答

    展开全文
  • 抽象语法树概念认知

    2020-07-06 16:46:36
    抽象语法树 概念抽象语法树(abstract syntax code,AST)是源代码抽象语法结构的树状表示,树上的每个节点都表示源代码中的一种结构,之所以说语法是’抽象’的,是因为这里的语法不会表示出真实语法中出现的每...

    抽象语法树

    概念:

    抽象语法树(abstract syntax code,AST)是源代码抽象语法结构的树状表示,树上的每个节点都表示源代码中的一种结构,之所以说语法是’抽象’的,是因为这里的语法不会表示出真实语法中出现的每个细节。

    在这里先补充一个概念:具象语法树(Concret Syntax Tree, 简称CST)。
    什么是具象语法树呢?
    我们知道一颗解析树是包含代码所有语法信息的树形结构,它是代码的直接翻译,所以解析树也被称为具象语法树。抽象语法树实际只是解析树的一个精简版。

    避免混淆,我们来简化一下概念:

    解析树 = CST = 具象语法树
    抽象语法树 = AST

    那么抽象语法树到底是什么样的呢?我们可以来看一个简单的例子:

    我们来写一段最简单js代码 20 + (15 - 3)*2,没错,这是一个简单的四则运算表达式,那么它的抽象语法树应该表现为什么样呢,在看AST(抽象语法树)之前,我们先来看一下它的解析树:

    在这里插入图片描述
    但是我们看到这样的一颗解析树显然是有些冗余的,那么我们可不可以对这颗解析树去繁取简呢,当然是可以的:

    在这里插入图片描述

    这里我们得到了一棵最简洁的树,去除了冗余的描述和符号,很直观的就可以看出树上每一个阶段节点之间的关系,从而也更能容易的推断出原表达式的样子,此时我们所得到的这颗树就是我们最终要得到的 20 + (15 - 3)*2 表达式的抽象语法树。

    这里只是简单的对抽象语法树概念的简单理解,当然还有从分析树到抽象语法树的具体的转化过程以及具体的表现形式,如果有需要请自行查阅相关资料。
    上述文章或许有理解错误,请不吝赐教!

    展开全文
  • NUMPAGES Java抽象类的概念和使用 在自上而下的继承层次结构中位于上层的类更具有通用性甚至可能更加抽象从某种角度看祖先类更加通用它只包含一些最基本的成员人们只将它作为派生其他类的基类而不会用来创建对象甚至...
  • 蓝色墨水水中抽象概念图矢量适用于抽象背景设计的AI格式素材。
  • 抽象概念及其作用

    千次阅读 多人点赞 2019-06-03 10:41:26
    在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 抽象类除了不能实例化对象之外,...

    一、什么是抽象类

    在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

    抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。

    由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。

    父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。

    在Java中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。

    二、为什么要用抽象类

    老是在想为什么要引用抽象类,一般类不就够用了吗。一般类里定义的方法,子类也可以覆盖,没必要定义成抽象的啊。

    其实不是说抽象类有什么用,一般类确实也能满足应用,但是现实中确实有些父类中的方法确实没有必要写,因为各个子类中的这个方法肯定会有不同,所以没有必要再父类里写。当然你也可以把抽象类都写成非抽象类,但是这样没有必要。

    而写成抽象类,这样别人看到你的代码,或你看到别人的代码,你就会注意抽象方法,而知道这个方法是在子类中实现的,所以,有个提示作用。

    三、抽象类和接口的区别

    抽象类

    抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板。

    接口

    接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。这就像契约模式,如果实现了这个接口,那么就必须确保使用这些方法。接口只是一种形式,接口自身不能做任何事情。

    抽象类和接口的对比

    在这里插入图片描述

    什么时候使用抽象类和接口

    • 如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧。
    • 如果你想实现多重继承,那么你必须使用接口。由于Java不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它。
    • 如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。
    • 假如有一个接口,五个实现类,现在的需求可能要往接口加一个方法,这样就要改动五个实现类,但需求只需要改动其中两个实现类,可以再定义一个抽象类去实现这个接口,在抽象类中新增这个方法,然后其他两个实现类实现这个抽象类就好了,或者使用 Java 8 中的新特性,在接口中新增默认方法或者静态方法。
    展开全文
  • Java抽象类的概念和使用

    千次阅读 2019-06-15 21:09:57
    在自上而下的继承层次结构中,位于上层的类更具有通用...这种只给出方法定义而不具体实现的方法被称为抽象方法,抽象方法是没有方法体的,在代码的表达上就是没有“{}”。包含一个或多个抽象方法的类也必须被声明为...
  • C++中的抽象概念详解

    2020-04-23 11:38:31
    C++中的抽象概念详解 本文转自: c++中的抽象概念详解 一、定义. 在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样。并不是所有的类都是用来描绘对象的, 如果一个类中没有包含足够...
  • 论文研究-系统抽象思维联邦式作战仿真概念模型.pdf, 运用系统抽象思维方法 ,提出了联邦式作战仿真的三级抽象开发策略 ,给出了指导第一级抽象概念模型方法体系的基本...
  • Java基础——抽象类的概念及特点

    千次阅读 2018-09-24 09:39:07
     因为它不是具体的类。(但是有构造方法)  3. 抽象类有构造方法,是给子类创建对象的  4. 抽象类中可以定义抽象方法  语法:在方法的修饰列表中添加abstract关键字,并且以“;”结束,不能带有“{}”  public ...
  • Java面向对象抽象概念和作用

    千次阅读 2018-12-27 11:26:44
    java中可以定义没有方法体的方法,该方法由其子类具体的实现,该没有方法体的方法我们称之为抽象方法,含有抽象方法的类我们称之为抽象抽象方法特点 只有方法的头没有方法体 抽象方法用abstract来修饰 抽象...
  • 所谓"抽象""具体

    千次阅读 2017-10-14 23:52:35
    抽象
  • 抽象概念用法及注意事项

    千次阅读 2016-12-29 22:30:31
    抽象概念用法及注意事项
  • 得出水果概念的过程,就是一个抽象的过程。 要抽象,就必须进行比较,没有比较就无法找到共同的部分。 共同特征是指那些能把一类事物他类事物区分开来的特征, 这些具有区分作用的特征又称本质特征。
  • 抽象与抽象函数

    千次阅读 2016-04-06 14:59:47
    4.7 抽象与抽象函数4.7.1概念(1)抽象函数:只有函数定义,没有函数体的函数。例如:abstract void fun()(2)抽象类(基类):使用abstract定义的类称之为抽象类。记住:抽象类天生就是当爹的,要被继承! ...
  • 简单工厂模式(Simple Factory Pattern): 使用一个类(通常为单体)来创建实例;...多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个
  • Java关键字之abstract(抽象类的概念和使用)

    万次阅读 多人点赞 2016-08-26 08:59:12
    (1)只给出方法定义而不具体实现的方法被称为抽象方法,抽象方法是没有方法体的,在代码的表达上就是没有“{}”。使用 abstract 修饰符来表示抽象方法和抽象类。 (2)abstract修饰符表示所修饰的类没有完全实现,...
  • AbstractKnowledgeGraph AbstractKnowledgeGraph, a systematic knowledge graph that concentrate on abstract thing including abstract entity and action. 抽象知识图谱,目前规模50...目标于抽象知识,包括抽象...
  • 抽象类和具体类的区别

    千次阅读 2020-12-08 19:11:42
    抽象类和具体类的区别 概念 抽象类是指被abstract修饰符所修饰的类 具体类则是指没有被abstract修饰符所修饰的类(即大家常说的普通类) 相同点: 抽象类和具体类的类体中都可以声明字段、方法、构造、初始化器、内部...
  • Java中为什么要有抽象类的概念

    千次阅读 多人点赞 2018-05-23 14:18:04
    所以用抽象类来把父类的设计的抽象,以至于它都没有任何具体的事例 当父类的方法不能够确定时,可以用abstract关键字修饰该方法,被abstarct修饰的方法是抽象方法,被abstract修饰的类叫抽象类。 所以上面的程序可以...
  • Java中抽象类的概念

    千次阅读 2009-11-01 21:18:00
    今天学习了Java中的抽象类的概念: 声明一个抽象类:abstract class 类名 ; 抽象类中必须包含一个抽象方法,抽象方法只有声明部分,没有实现方法,即没有方法体部分,如abstract 方法名() ; 前面学习的都...
  • 1.什么是抽象 抽象就是把一个对象的分析出...(1)解决问题的复杂程度直接取决与抽象的种类和质量 让抽象出来的类更加符合你想解决的问题,必须要花较大的精力 3.什么是对象 对现实中实际物体的一种模拟,模仿它的
  • 接口可以继承接口。 抽象类并不能继承接口,但可以实现接口。 抽象类可以继承具体类...抽象类在面向对象中是被用来描述现实中的抽象事物, 抽象类没有对象概念所以不能被实例化. 但可以定义属性和方法, 其中属性方.
  • c++中的抽象概念详解

    千次阅读 2013-06-13 14:18:15
    并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。在...
  • 摘要 本人最近完成了一个封装数据库访问抽象层的项目。我们开发的数据库访问抽象层作为... 在本文主要介绍数据库访问抽象层的概念,常见的几种数据库编程接口ODBC、JDBC、OLE-DB、ADO、OCI等。数据库访问抽象层的意
  • C#、C++、JAVA中虚函数和抽象函数的概念对比 原文地址 1、C++中函数被定义为虚函数的方法是在函数名前加virtual,虚函数可以有自己的具体内容,也可以不含有函数实现内容,称为纯虚函数。这里未指明为纯虚...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 546,104
精华内容 218,441
关键字:

抽象与具体的概念