Protected 在基类中定义后,能被派生类调用,但是不能被其他类调用。

virtual 在基类中定义后,在派生类中能被重写。

using System;
using System.Collections.Generic;
using System.Text; namespace 继承
{
class Vertebrate
{
protected string spine;//受保护的字段
private double weigth;
private double temperature;
public double Weigth
{
set
{
if (value < )
{
weigth = ;
}
else
{
weigth = value;
}
}
get { return weigth; }
}
public double Temperature
{
set
{
if (value < )
{
temperature = ;
}
else
{
temperature = value;
}
}
get { return temperature; }
}
public Vertebrate()
{
spine = "脊柱";
weigth = ;
temperature = ;
}
public virtual void Breate() //虚方法
{
Console.WriteLine("呼吸");
}
public void Sleep()
{
Console.WriteLine("睡觉");
}
}
}
using System;
using System.Collections.Generic;
using System.Text; namespace 继承
{
class Program
{
static void Main(string[] args)
{
Vertebrate vertebrate = new Vertebrate();
vertebrate.spine1 = "脊柱"; //public的就能被直接调用
Mammal mammal = new Mammal();
Fish fish = new Fish();
Animal animal = new Animal();
Console.WriteLine("我是一只哺乳动物");
mammal.Scukle();
animal.Breate();
mammal.Breate();
fish.Breate();
mammal.Sleep();
mammal.Message();
}
}
class Fish : Vertebrate
{
public override void Breate()//重写基类中的虚方法
{
Console.WriteLine("用鳃呼吸");
}
}
class Animal : Vertebrate
{ }
class Mammal : Vertebrate//派生类:基类
{
private string arms;
private string legs;
private int age;
public int Age
{
set { age = value; }
get { return age; }
}
public Mammal()
{
arms = "前肢";
legs = "后肢";
Age = ;
Weigth = ;
Temperature = ;
}
public void Scukle()
{
Console.WriteLine("哺乳");
}
public override void Breate()
{
Console.WriteLine("用肺呼吸");
}
public void Message()
{
Console.WriteLine("体重:{0}", Weigth);
Console.WriteLine("年龄:{0}", Age);
Console.WriteLine("体温:{0}", Temperature);
Console.WriteLine("我有{0}和{1}", arms, legs);
}
}
}

C#Protected和多态(虚方法)的更多相关文章

  1. C#属性-索引器-里氏替换-多态-虚方法-抽象-接口-泛型-

    1.属性 //属性的2种写法 public class person { private string _name; public string Name { get { return _name; ...

  2. C#多态--虚方法实现多态

    1.虚方法提供一种默认实现,子类可以选择是否重写,如果不重写,那么就使用父类已经实现的方法.(重写可以改变方法的指针) 如果需要改变类型指针,那么需要做方法的重写: 1.如果子类方法是重写方法,那么系 ...

  3. c# 多态 虚方法

    多态: 为了解决同一种指令,可以有不同行为和结果 在运行时,可以通过调用同一个方法,来实现派生类中不同表现. 虚方法——抽象类——抽象函数——接口 虚方法: 被virtual 关键字修饰的方法  叫做 ...

  4. Java 多态 虚方法

    Java中多态的实现方式:接口实现,继承父类进行方法重写,同一个类中进行方法重载. 看代码: package com.company; public class Main { public stati ...

  5. C#-面向对象的三大特性——多态(虚方法与重写、抽象类、接口)

    多态 同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果.在运行时,可以通过指向基类的指针,来调用实现派生类中的方法. 编译时的多态性:编译时的多态性是通过重载来实现的.对于非虚的成员来说 ...

  6. C# 继承、虚方法、方法重载和多态

    继承:继承属于单继承,只能继承一个父类. 继承的一个结果是派生于基类的子类在方法和属性上有一定的重叠. 继承只能够同时继承与一个基类:可以同时继承一个基类和多个接口,但是基类必须放在第一个.(注:C# ...

  7. c# 虚方法(virtual)与 多态(Polymorphism)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; //虚方法(virtual) ...

  8. 【原创】SystemVerilog中的多态和虚方法

    封装可以隐藏实现细节,使代码模块化,继承可以扩展已经存在的代码模块,目的都是为了代码重用.多态是为了实现接口的重用.在SystemVerilog中,子类和父类之间多个子程序使用同一个名字的现象称为Sy ...

  9. C# 工厂模式+虚方法(接口、抽象方法)实现多态

    面向对象语言的三大特征之一就是多态,听起来多态比较抽象,简而言之就是同一行为针对不同对象得到不同的结果,同一对象,在不同的环境下得到不同的状态. 实例说明: 业务需求:实现一个打开文件的控制台程序的d ...

随机推荐

  1. Few-shot Object Detection via Feature Reweighting (ICCV2019)

    论文:https://arxiv.org/abs/1812.01866 代码:https://github.com/bingykang/Fewshot_Detection 1.研究背景 深度卷积神经网 ...

  2. Vue之组件及组件通信

    组件之全局组件 //注意:需要在Vue实例化之前注册全局组件,使用Vue.component("组件名",{ template:`组件模板` }) Vue.component(&q ...

  3. 三分钟带你入门 redis 高可用架构之哨兵

    什么是哨兵? 哨兵(Sentinel)是 redis 的高可用性解决方案,前面我们讲的主从复制它是高可用的基础,需要人工介入才能完成故障转移,哨兵可以解决这个问题,在主从复制情况下,当主节点发生故障时 ...

  4. day28

    断点调试 在想要加断点的地方用鼠标点击一下,你会看到一个红色圆圈 变红的地方,程序执行到,就会暂停 断点应该加在报错之前 绿色箭头表示快速跳到下一个断点执行 控制台报错,点击你能看懂的最后一行,光标会 ...

  5. 负载均衡集群介绍、LVS介绍、LVS调度算法、LVS NAT模式搭建

    7月4日任务 18.6 负载均衡集群介绍18.7 LVS介绍18.8 LVS调度算法18.9/18.10 LVS NAT模式搭建 扩展lvs 三种模式详解 http://www.it165.net/a ...

  6. Block循环引用问题

    根控制器没办法销毁,除非程序退出 从一个控制器跳到另外一个控制器,调用该控制器的pop方法才会销毁该控制器 self是一个强指针 在block中使用self时要注意循环引用的问题 最好将当前block ...

  7. shell du sh 文件大小输出

    按照文件大小升序输出结果: du -sh * | sort -h 如果要逆序输出,则: du -sh * | sort -hr

  8. 翻转二叉树(深搜-先序遍历-交换Node)

    题目:翻转二叉树,例如 4 / \ 2 7 / \ / \ 1 3 6 9 to 4 / \ 7 2 / \ / \ 9 6 3 1 已知二叉树的节点定义如下: class TreeNode { in ...

  9. 关于<form> autocomplete 属性

    基本知识 值 描述 on 默认.规定启用自动完成功能. off 规定禁用自动完成功能. autocomplete 属性规定表单是否应该启用自动完成功能. 自动完成允许浏览器预测对字段的输入.当用户在字 ...

  10. A.Single Push

    题目:简单推动 题意:你被给予两个相同长度为n的数组a[1...n]和b[1...n] 目的是进行一个推入操作,你会选择l,r,k三个数字满足1 <= l <= r <= n 还有 ...