多态

初识继承和多态

▼魔方 西西 提交于 2020-01-10 02:44:14
集成的概念 在C#中,一个类可以继承另一个类,被继承的类通常称为父类或基类。继承其他类的类被称为子类或派生类。派生类的定义可以增加新的数据和功能,派生类的实例也直接可以使用父类的数据或功能,但父类的实例不可以直接使用子类定义的数据或功能 继承是面向对象编程中的一个重要特性。继承关系在类图中表示一个箭头,箭头指向父类如图所示: base关键字和protected修饰符 我们知道this关键字可以表示当前类的实例,通过它可以访问类本身的成员,在C#中还有一个base关键字表示父类,它可以用于访问父类的成员。 如在SE类中可以通过base.Age访问Empployee类的Age属性。 父类中的成员如果用private修饰,它将作为私有成员,其他任何类都无法访问。如果设为public则任何类都可以访问,C#中还提供了另一种修饰符,被这个修饰符修饰的成员允许被其子类访问而不允许被其他非子类访问。 三种修饰符对类成员的限制强度如下: private>protected>public 子类构造函数 隐式调用父类构造函数 在创建子类的实例对象是会先调用父类的构造函数,如果我们不显示的指定调用父类构造函数系统会自动隐式的调用父类的无参构造,如果父类没有无参构造则必须显示的指定调用要调用的父类构造。 显示调用父类的构造函数 上面说到使用base关键字可以表示父类所以只要在子类的构造函数后添加:base

C#基础--继承与多态

二次信任 提交于 2020-01-10 02:43:20
面向对象三大特性:封装,继承与多态,这里讲一下后两个特性。 继承 继承:指一个对象延续另一个对象的特征(属性和方法),并且有自己的个性特征(属性和方法)。 必要性:代码复用,避免重复;一处更新,处处更新。与封装不同的是,封装主要是封装一个方法、一个类,使用时直接调用不能更改;继承主要讲需要的属性和方法(主要是方法)进行“封装”,且要使用时还可以继续扩展自己的特性(继续增加、修改方法--方法重写)。 使用广泛:C#里,Object类是所有类的基类,winform里面所有控件都继承于Control类。 父类与子类:当A继承于B时,A是子类(或叫派生类),B是父类(或叫基类或超类)。 传递性:A→B,B→C,C具有A的特性。 单根性:一个子类只能有一个父类,一个父类可以有若干子类。 protected:只有父类与子类才能访问。 sealed:密封类,不允许有子类,有利于保护知识产权。 父类与子类关系:父类完全包含于子类,子类完全包含父类: 举例说明一下继承的好处 需求说明: 设计玩具猫、玩具狗相关程序,要求: 属性:姓名,自身颜色,自己类别,喜好食物 动作:自我介绍,跳舞,赛跑 常规实现: Models--Cat 1 namespace InheritanceTest 2 { 3 class Cat 4 { 5 public string Name { get; set; } 6

抽象类、多态

元气小坏坏 提交于 2020-01-10 00:27:23
这里写自定义目录标题 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一个表格 设定内容居中、居左、居右 SmartyPants 创建一个自定义列表 如何创建一个注脚 注释也是必不可少的 KaTeX数学公式 新的甘特图功能,丰富你的文章 UML 图表 FLowchart流程图 导出与导入 导出 导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示; 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示; 全新的 KaTeX数学公式 语法; 增加了支持 甘特图的mermaid语法 1 功能; 增加了 多屏幕编辑 Markdown文章功能; 增加了 焦点写作模式、预览模式、简洁写作模式

Java知识点梳理——多态

人走茶凉 提交于 2020-01-09 21:56:19
1、定义: 多态是同一个行为具有多个不同表现形式或形态的能力,即一个接口不同的实例执行不同的操作; 2、优点: 消除类型之间的耦合关系、可替换性、可扩展性、接口性、灵活性、简化性; 3、多态存在的3个必要条件   a、 继承 :在多态中必须存在有继承关系的子类和父类;   b、重写:子类对父类中的某些方法重新定义,在调用这些方法时就会 调用子类中的方法 ;   c、父类引用指向子类对象(向上转型):需要将子类引用赋给父级对象,才能调用父类和子类的方法; 1 public class Test { 2 public static void main(String [] args){ 3 Person pc = new Chinese(); // 父类引用指向子类对象 4 pc.sayHello(); // 调用Chinese的 sayHello 输出——>您好 5 Person pa = new American(); // 向上转型 6 pa.sayHello(); // 输出——>Hello 7 } 8 } 9 10 public abstract class Person { 11 public void sayHello(); 12 } 13 14 public class Chinese extends Person { 15 public void sayHello()

EffectiveC++ 第7章 模板与泛型编程

拥有回忆 提交于 2020-01-09 21:08:00
我根据自己的理解,对原文的精华部分进行了提炼,并在一些难以理解的地方加上了自己的“可能比较准确”的「翻译」。 Chapter 7 模版与泛型编程 Templates and Generic Programming 本章无法使你成为一个专家级的template程序员,但可以使你成为一个比较好的template程序员。本章也会给你必要信息,使你能够扩展你的template编程,到达你所渴望的境界。 条款41 : 了解隐式接口和编译器多态 在oop的世界里,我们总是以显式接口(explicit interfaces)和运行期多态(runtime polymorphism)解决问题。举个例子,给定这样(没啥意义)的class: class Widget{ public: Widget(); virtual ~Widget(); virtual std::size_t size() const; virtual void normalize(); void swap(Widget& other); //见条款25 ... }; 和这样的函数(也没啥意义): void doProcessing(Widget& w) { if(w.size()>10 && w != someNastyWidget){ Widget temp(w); temp.normalize(); temp.swap(w);

抽象、继承和多态是什么

岁酱吖の 提交于 2020-01-09 04:19:14
1.继承 抽象就是找出一些事物的相似和共性之处,然后将这些事物归为一个类,这个类只考虑这些事物的相似和共性之处,并且会忽略与当前主题和目标无关的那些方面,将注意力集中在与当前目标有关的方面。例如,看到一只蚂蚁和大象,你能够想象出它们的相同之处,那就是抽象。抽象包括行为抽象和状态抽象两个方面。例如,定义一个Person类,如下: class Person{ String name; int age; } 人本来是很复杂的事物,有很多方面,但因为当前系统只需要了解人的姓名和年龄,所以上面定义的类中只包含姓名和年龄这两个属性,这就是一种抽像, 使用抽象可以避免考虑一些与目标无关的细节。我对抽象的理解就是不要用显微镜去看一个事物的所有方面,这样涉及的内容就太多了,而是要善于划分问题的边界,当前系统需要什么,就只考虑什么。 2.抽象 在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并可以加入若干新的内容,或修改原来的方法使之更适合特殊的需要,这就是继承。继承是子类自动共享父类数据和方法的机制,这是类之间的一种关系, 提高了软件的可重用性和可扩展性。 3.多态 多态是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象

多态,重写和重载

时光怂恿深爱的人放手 提交于 2020-01-08 23:59:30
多态就是父类调用子类重写过的方法。 重载就是不相干的类之间使用相同的方法但是使用的方法名称相同。 还有接口的使用default修饰符使接口的方法变成普通方法可以带body,但是其他方法都是默认的抽象方法,不可以有body。 接口的变量默认static ,final 终端又静止,不依赖对象,不能改写,这是今天的所得 来源: https://www.cnblogs.com/otakus/p/12169170.html

面向对象

帅比萌擦擦* 提交于 2020-01-08 16:28:46
一、面向对象的编程 1、java的四大特点 1.1 封装:提高程序的安全性。 1.1.1 什么是封装 将属性私有化 ,所有的属性使用private进行修饰;编写public的取值,和赋值方法。(getter,setter方法) 对常用的方法进行封装为工具类,提高工作效率。 1.1.2 为什么要封装 提高程序的安全性,不合法的数据不允许被录入到程序中。 1.2 继承:提高代码的复用性。 N多个类中的大量相同的代码,就可以将N多个类中的相同代码提取出来,放到另外的一个类中存储,另外的这个类,就称为父类,其它的N多个类就称为子类。 1.3 多态:提高程序的可扩展和可维护性。 1.3.1 定义 同一个引用类型,使用不同的实例而执行不同操作,实现多态的前提条件是继承,没有继承无从谈多态 。 1.3.2 多态的两种表示形式 父类作方法的形式参数。 父类作方法的返回值,又称为“工厂设计”模式。 1.3.3生活与程序中的多态 生活中的多态:同一事物,由于条件不同,而产生的结果不同。 程序中的多态:同一父类,创建不同子类,运行效果不同。 1.4 抽象 抽象类中可以编写构造方法,它的构造方法是为了给子类提供调用的了,目的是创建子类对象。 各子类共有的方法,但是各子类中有各自不同的实现时,需要将方法声明为抽象方法。 二、 接口 1、定义 接口中可以有属性,接口中所有的属性均是public static

王道JAVA随堂笔记

ⅰ亾dé卋堺 提交于 2020-01-08 09:59:41
DAY 9 一、多态 1.多态是什么 多态是某一个事物在不同时刻或者不同条件下表现出来的不同状态。 java语言中的多态:“同一个对象”的行为(方法),在不同的时刻或条件下,表现出不同的效果。 2.多态的发生 多态的发生条件: 继承(多态一定要继承行为) 子类,一定要覆盖父类中,要发生多态的方法(行为) 父类引用指向子类实例 3.多态 多态: 编译时多态(方法重载): 2. 运行时多态:今天所讲的多态 4.多态中成员访问的特点 成员属性和成员方法: 编译看左边 : 引用变量的类型,规定了我们通过引用变量能访问到的对象的成员 运行看右边 : 究竟实际执行的方法 多态的优缺点 优点: 解决代码冗余的问题 使我们的程序可扩展性更好 缺点: 多态不能访问子类特有的方法 (为了解决多态无法访问子类特有的方法,我们可以使用向上转型和向下转型。) 为了保证向下转型是安全的,这里我们采用 instanceof 来判断当前对象是否是当前类的对象。 instanceof语法:对象名 instanceof 类名 返回值是boolean型; **注意:**null instanceof 任意类型结果都是false 二、抽象类 1.引入 当一个方法只有方法声明的时候,也就意味着它没有具体的方法实现,——> 抽象方法 必须使用abstract关键字来定义 2. 当一个类中包含了抽象方法

面向对象有三大特征

纵饮孤独 提交于 2020-01-08 00:35:38
封装、继承、多态 封装 定义:隐藏类的内部信息,不允许外部程序直接访问,而是通过方法进行操作 封装操作步骤 将属性设置为私有的private,只能在本类中使用 编写对应属性的赋值setXxx和取值getXxx方法 第三步:根据情况编写判断语句 继承 多态 来源: https://www.cnblogs.com/huochemeiyouhuo/p/12164397.html