再谈多态,抽象类和接口

上一次博客已经概念性的概述了继承多态,抽象类和接口,这次来具体的谈一谈他们之间的联系和需要注意的地方。

一、继承和多态:Inheritance (继承) & Polymorphism(多态)

1、在父类中定义时:

创建的多态函数:注意使用virtual 关键字;

2、当子类实现父类并实现其特有的方法(覆盖父类的virtual方法)时:

注意使用override关键字

3、C#中的new关键字

   在子类中使用new关键字来声明方法,则说明此函数并不是override父类的方法

4、子类必须重新定义其自己的构造函数,父类的构造函数不被继承

如果想调用父类的构造函数或者函数,则需要使用base关键字

 5、几个访问修饰符的作用域

访问修饰符

被修饰元素访问限制

public

所有类都可访问

private

只有本类或本结构体重可以访问

protected

在本类或本结构体,或者在子类中可以被访问

internal

在同一个项目文件中可被访问

protected internal

在同一个项目文件或者其他项目文件中的子类中可被访问

二、抽象类(abstract class)

1、用abstract关键字声明抽象方法(方法隐式声明为virtual,且不能与static,virtual关键字混用)。

注意:在抽象类中也可以定义非抽象方法(即实现了内容的方法),当抽象类一定不能声明实体对象。

2、Abstract does force all the derived classes to implement the method, but nothing forces  the derived derived classes to implement its own method.

(即子类已经继承了父类,并且实现了其定义的抽象函数,则孙子类没必要继续override了)

3、与abstract class 对应的是sealed class(密封类)

密封类不允许被继承和派生

三、接口(interface)

1、接口的定义及使用时,注意:

  • 接口可以继续继承父接口从而产生新的接口
  • 定义的接口与抽象函数很像,但接口类里面所有方法必须全部是定义,而不能实现。
  • 接口中声明方法的定义时,不能加访问修饰符
  • 继承一个接口,则必须实现该接口中的所有方法!!!
  • 同一个类允许继承多个接口
  • 某个类继承接口实现其方法时允许添加virtual关键字,进而后续实现多态

 2、实现接口中的方法有两种;

隐式实现:访问修饰符   返回值类型  方法名{  ...  }

显示实现:返回值类型   接口名称 . 方法名{  ...   }    (注意:不能有访问修饰符)

且使用时:

lesson 4 再谈继承多态,抽象类和接口的更多相关文章

  1. Java入门系列之类继承、抽象类、接口(五)

    前言 C#和Java关于类.抽象类.接口使用方式基本相似,只是对应关键字使用不同罢了,本节呢,我们只是对照C#和Java中关于这三个概念在具体使用时,看看有哪些不一样的地方. 类继承 C#和Java在 ...

  2. 第二十八节:Java基础-进阶继承,抽象类,接口

    前言 Java基础-进阶继承,抽象类,接口 进阶继承 class Stu { int age = 1; } class Stuo extends Stu { int agee = 2; } class ...

  3. soapUI 再谈SoapUI接口测试--文件组织与接口“布局”管理

    再谈SoapUI接口测试--文件组织与接口“布局”管理 by:授客 QQ:1033553122 SoapUI-Pro-x64-5.1.2_576025(含破解文件),软件下载地址: http://pa ...

  4. 黑马程序员——【Java基础】——面向对象(一)概述、类与对象、继承、抽象类、接口、多态、内部类

    ---------- android培训.java培训.期待与您交流! ---------- 一.面向对象概述 1.面向对象:是一个很抽象的概念,它相对面向过程而言,是一种程序设计的思想. 2.面向对 ...

  5. 第四课 OOP封装继承多态解析,接口抽象类选择 2019-04-21

    父类 xx = new 子类(); xx.method(); 1 普通方法由编译时决定(左边) --- 提高效率 2 虚方法(virtual)  由运行时决定-- -多态,灵活 3 抽象方法由运行时决 ...

  6. python之路----继承的抽象类和接口类

    抽象类与接口类 接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数 ...

  7. Java 对象的继承,抽象类,接口

    子父级继承 关键字 extends 首先创建一个父类 class Fu { String name; int a=1; public void word() { System.out.println( ...

  8. 《Java技术》第三次作业--面向对象——继承、抽象类、接口

    1.阅读下面程序,分析是否能编译通过?如果不能,说明原因.应该如何修改?程序的运行结果是什么?为什么子类的构造方法在运行之前,必须调用父 类的构造方法?能不能反过来? class Grandparen ...

  9. Java之继承、抽象类、接口篇

    一.继承(extends) 什么是继承? 继承是对现实生活中的"分类"概念的一种模拟. 狮子拥有动物的一切基本特性,但同时又拥有自己的独特的特性,这就是"继承" ...

随机推荐

  1. android activity状态保存

    一.被其他任务打断(来电话),再次打开希望保留数据 private String SAVE_INSTANCE_TAG = "ATWAL"; @Override protected ...

  2. Qt irrlicht(鬼火)3D引擎 摄像机旋转问题

    点击打开链接Irrlicht中的摄像有一个函数 setUpVector() if (m_device != 0 ) { core::vector3df rotation(y,x,0.f); m_cam ...

  3. Qt程序加图标

    第一步 准备一个ICON图标 例如:myicon.ico 新建文本文件,里面编辑文字 IDI_ICON1 ICON DISCARDABLE "myicon.ico" 文件另存为 x ...

  4. storm_jdbc 最完整的版本

    开头:我这里是根据bolt与trident进行分类的,写入和读取的方法可能会在同一个类中,最后会展示一个测试的类来说明怎么用. JdbcSpout:这个类是我写入数据和读取数据的公用spout,细节注 ...

  5. 在Code::Blocks中编译和使用wxWidgets3.0.0教程

      跳转至:指南,搜索 注意,编译Code :: Blocks的对wxWidgets的3.0.0链接不是很稳定,但该库至少可以被正确编译,(只是使用的时候可能会有问题):CodeBlocks开发商都在 ...

  6. %matplotlib inline

    整理摘自 https://zhidao.baidu.com/question/1387744870700677180.html %matplotlib inline是jupyter notebook里 ...

  7. LeetCode 19——删除链表的倒数第 N 个节点

    1. 题目 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后 ...

  8. nopcommerce商城系统--安装nopCommerce

    原址:http://www.nopcommerce.com/docs/79/installing-nopcommerce.aspx .NET Framework 4.5.1下载:http://www. ...

  9. chromium源码阅读--V8 Embbeding

    V8是google提供高性能JavaScript解释器,嵌入在chromium里执行JavaScript代码. V8本身是C++实现的,所有嵌入本身毫无压力,一起编译即可,不过作为一个动态语言解释器, ...

  10. hash function比较

    http://blog.csdn.net/kingstar158/article/details/8028635 由于工作需要,针对千万级别的数据,使用stl::map着实存在着效率问题,最后使用bo ...