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. Acquistion Location Confidence for accurate object detection

    Acquistion Location Confidence for accurate object detection 本论文主要是解决一下两个问题: 1.分类得分高的预测框与IOU不匹配,(我猜应 ...

  2. Java的Arrays类 基本用法

    初识Java的Arrays类 Arrays类包括很多用于操作数组的静态方法(例如排序和搜索),且静态方法可以通过类名Arrays直接调用.用之前需要导入Arrays类: import java.uti ...

  3. 解决failed to push some refs to 'git@github.com:TQBX/GIT-Github-.git'问题

    解决以下问题问题: git pull origin master --allow-unrelated-histories 进入vim界面->ESC->:wq 重复第一步->git p ...

  4. 使用laravel快速构建vuepress管理器

    使用laravel快速构建vuepress管理器 介绍 刚刚学了下laravel感觉很方便,最近也在用vuepress做个人博客,但是感觉每次写文章管理文章不是特别方便,就使用laravel写了这个v ...

  5. selenium处理隐藏元素的方法

    <li class="navbar-nav-item ">       <a href="#" id="cust"> ...

  6. IdentityServer4 自定义授权模式

    IdentityServer4除了提供常规的几种授权模式外(AuthorizationCode.ClientCredentials.Password.RefreshToken.DeviceCode), ...

  7. Ztree树增删改查菜单,遇到的问题总结

    一.引言 我今天做了一个Ztree树增删改查菜单的功能.其中遇到了很多坑爹的问题,和大家讲述一下. 二.代码展示 1.Ztree树前台代码 <%@ page language="jav ...

  8. html代码/如何做到有横线无竖线的表格/或横线有颜色/竖线没颜色

    改变它的css样式,table{ border-collapse:collapse;}table tr td{ border-bottom:1px solid #dedede;}

  9. jQuery九宫格抽奖

    <div id="box"> <div class="content content-1">1</div> <div ...

  10. Java分割面板和选项卡面板的应用

    1.分割面板 JSplitPane类的常用构造方法 构造方法 说明 JSplitPane() 创建一个默认的分割面板.默认情况下为在水平方向上分割,重绘方式为只在调整分隔条位置完成时重绘 JSplit ...