再谈多态,抽象类和接口

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

一、继承和多态: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面试收集录 数据库

    1.SQLite数据库如何查询表table1的第20条到30条记录? select * from table1 limit 19,11   ==>从19开始,11个数据 2.如何才能将table ...

  2. mysql 5.7.19 zip版本 windows安装步骤

    请注意此文档用于msyql5.7系列及以后版本(包括最新 mysql 8.0.11)zip版本windows下的安装1.下载mysql省略2.解压mysql到D:\Program Files\mysq ...

  3. SharePoint2013修复报错

         今天项目组的Sharepoint2013不小心被卸载了,本想着直接修复,谁知道在修复的时候一直报错,说找不到什么文件.报的就是类似于这样的错误: Product: ######### -- ...

  4. AV Foundation 实现文字转语音

    AV Foundation 主要框架 CoreAudio 音频处理框架 扩展学习:<Learning CoreAudio> CoreVideo 视频处理的管道模式,逐帧访问 CoreMed ...

  5. Nullable可空类型

    一个Nullable类型就是基本类型加上一个"是否为null指示器"的合成类型.对于一个类型,如果既可以给他分配一个值,也可以给它分配null引用,我们就说这个类型是可空的. 可空 ...

  6. lua敏感词过滤

    --过滤敏感词(如果onlyKnowHas为true,表示只想知道是否存在敏感词,不会返回过滤后的敏感词,比如用户注册的时候,我们程序是只想知道用户取的姓名是否包含敏感词的(这样也能提高效率,检测到有 ...

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

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

  8. Hadoop2.5.2集群部署(完全分布式)

    环境介绍 硬件环境 CPU 4 MEM 4G 磁盘 60G  软件环境 OS:centos6.5版本 64位 Hadoop:hadoop2.5.2 64位 JDK: JDK 1.8.0_91 主机配置 ...

  9. 学习人工智能的第六个月[深度学习[Deep Learning,DL]]

    这个月阅读了论文[Partial Adversarial Domain Adaptation-eccv18],文章着眼于源域标签空间包含目标域标签空间的场景,在域对抗神经网络的基础上提出了部分对抗域适 ...

  10. 一个简单的ipfs音乐播放器的实现

    IPFS音乐播放器 IPFS相关 IPFS第一次亲密接触 什么是IPFS IPFS对比HTTP/FTP等协议的优势 IPFS应用场景 -移动数据 交易 路由 网络 定义数据 命名 使用数据 具体场景; ...