首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

利用实例巧妙区分“抽象方法”和“虚方法”!

举例分析方法的不同 下面举个栗子说明一个抽象方法和虚方法的不同用途,以下代码使用C#语言编写,Java等语言思路类似。 抽象方法 比如说有一个基类“动物类”,同时有两个子类“鸟类”和“鸡类”。...如鸡和鸟都会叫,但是叫声不同, 鸡叫:咯咯咯 鸟叫:叽叽叽 我们就可以在基类“动物类”中定义一个约束“鸟类”和“鸡类”的抽象方法“叫声”。让这两个类分别实现该方法。...抽象方法的实现代码如下: 定义抽象类“动物类”实现抽象方法 //定义抽象类“动物类” abstract class Animal { //定义抽象方法“叫声”...chicken.cry(); //实现“鸡类”中叫声方法 } } 运行结果: ?...//定义基类“动物类” class Animal { //定义抽象方法“叫声” public void fly() {

80030
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    “法天象而应四时”--茶话软件开发之“抽象”

    我们就可以直接的想到他是一个人,而不是先想到他是一个动物, 况且,说到动物,我们想到的是猫、狗、狮子老虎之类的东西,显然,我们不能用“动物”类实例化张三,我们说“动物”类是抽象的,它不是一个具体的类,所以我们的动物类应该这样定义...这样我们的狗 dog 和 猫 cat它们都会吃东西,睡觉,并发出叫声了: 狗 dog=new 狗(); 猫 cat=new 猫(); dog.叫声();//汪汪 cat.叫声();//咪咪 现在看起来都没有问题...现在,我们需要对抽象类进一步抽象了,我们只需要它原来的一部分东西,例如,我们只需要把动物抽象类中的“叫声”抽象成 一个接口,况且叫它“叫声接口”,对原有的代码进行以下改进: interface 叫声接口...{ void 叫声(); } class 动物:叫声接口 {...} class 玩具狗:叫声接口 {...}...玩具狗 dog1=new 玩具狗(); dog1.叫声(); ------------- 非常好,我们的玩具狗正常工作了,没有和动物类混杂到一块去,我们来总结一下类、抽象类、接口的一些区别: 类:是现实世界中

    68480

    JS进阶系列03-JS面向对象的三大特征之多态

    JAVA中,多态通过在子类中重写父类方法去实现。但是在JS中,由于JS本身是动态的,天生就支持多态。大家可以通过几个例子来理解一下。 2....所以,大臣们搜罗了鸭,鸡,狗等动物,而且还设置了专门的选拔官员测试,选拔官员一声令下:‘唱’,面前的动物就发出了特有的叫声,鸭子嘎嘎嘎,小鸡咯咯咯,小狗汪汪汪......要实现这个功能,我们可以使用如下代码...如果动物类型增加,我们必须在开始唱歌方法中新增判断分支。这就好比是选拔官员发出的指令是这样的:“你是鸭子的话,唱嘎嘎嘎,是鸡的话,唱咯咯咯,是狗的话,唱汪汪汪......”这明显是不合理的。...JAVA会使用类继承和重写的方式来实现,如下: abstract class Animal { abstract void sing(); } class Duck extends...参考 BOOK-《JavaScript设计模式与开发实践》 第一部分 Javascript基于对象三大特征 【原生js】js面向对象三大特征之多态笔记 JAVA多态

    64320

    第十天 面向对象-继承抽象类【悟空教程】

    图1-1 动物继承关系图 动物类可以有姓名、年龄的成员变量,可以有吃饭、睡觉的方法。 所有猫科与犬科均有动物的成员变量与成员方法,且猫科与犬科均属于动物,所以猫科与全科均可以继承动物类。...如我们可以听一只狼的叫声,也可以听一只狗的叫声,但是如果我们听一只犬科的叫声就显然不合适了。 抽象类继承细节 只有覆盖了抽象类中所有的抽象方法后,其子类才可以实例化。...动物类: 属性:年龄、姓名 方法:吃饭、睡觉 猫科类: 动物类基础上添加产地 添加抓老鼠的方法 波斯猫、巴厘猫、卡通猫与猫科类类似 犬科: 与猫科类类似 3.1.1 案例分析 对于动物类与犬科猫科,均为抽象的概念...如我们可以听一只狼的叫声,也可以听一只狗的叫声,但是如果我们听一只犬科的叫声就显然不合适了。...;}} 4.2.2 动物类方法重写 要求: 1.定义动物类,有名称和年龄两个属性,且属性私有化,提供相应的getXxx与setXxx方法,提供无参数的无返回值的吃饭方法,内容为:“吃饭...”;

    69560

    抽象类及接口详解

    我们加入抽象类(设计实现大的功能单元),定义一个抽象类-哺乳动物类,其中定义了共同的习性,走路的方法,呼吸的方法,繁衍下一代的方法。但是叫声不一样。我们又声明一个叫声的方法不实现(抽象方法)。...比如叫声,行走。这些功能,我们就可以使用接口来定义声明。然后继承再去实现。 到了这里,我们总结下到底我们编写程序为什么需要使用抽象类呢?为什么需要使用接口呢?单一用一个普通的类不好吗?简单又容易。...上面的例子来讲,规定好了这个叫声这个方法,那么继承的就去实现这个叫声方法就好了。...现在及未来都将受到影响     3、如果实例方法包含了sealed修饰符,那么它也必须包含override修饰符,其父类方法必须包含virtual修饰符 /// /// 普通动物类..."; } } /// /// 动物狗类密封类,无法产生派生类,不能作为基类,继承了动物类 /// public

    59120

    Java多态理解_什么是java多态

    例如要实现一个动物叫的方法,由于每种动物的叫声是不同的,因此可以在方法中接收一个动物类型的参数,当传入猫类对象时就发出猫类的叫声,传人犬类对象时就发出犬类的叫声。...在Java中为了实现多态,允许使用一个父类类型的变量来引用一个子类类型的对象,根据被引用子类对象特征的不同,得到不同的运行结果。...Java提供了一个instanceof关键字来判断一个对象的类型,其使用格式如下: 对象(或对象的引用变量) instanceof 类(或接口) 对上面animalShout()方法代码进行修改:...多态思维导图: JAVA基础思维导图 << 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

    53410

    Java实现-归并排序算法-图详解

    归并排序详解(后序遍历) 大家可能都对二叉树的后序遍历比较熟悉,实际上归并排序本质框架就是二叉树的后序遍历,根结点的遍历只不过换成了治(Merge方法的调用),本文将结合图+代码的方式进行最通俗的讲解...分的过程 下面自制配了一张图来更好理解分的过程,其实完全就是左右根的后序遍历,根的遍历就是治(Merge方法的调用),分的过程中暂不可考虑根结点的遍历,图中仅展示左边的分的过程,以mid将其分组,递归的终止条件就是...mergeSort(arr, left, mid, temp); //向右递归进行分解 图分组中靠右的部分 mergeSort(arr, mid +...1, right, temp); //合并(相当于根)下面图中暂未表示合的思路 merge(arr, left, mid, right, temp); } }...「第七次合并图图解:」 ? 第七次合并是最后一次合并,可以看到数组已经有序了,最后将temp数组copy到原数组即可排序完成!

    83610
    领券