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. 2019-9-26:渗透测试,基础学习,js正则以及什么是目录扫描,笔记

    js正则表达式,用单个字符串描述或者匹配符合特定语句规则的字符串,相当于一种搜索模式.一些字符序列组合在一起,可以简单也可以复杂模式的,可以去搜索还可以替换 正则表达式语法/表达式/修饰符(可选),例 ...

  2. JAVA网络通信底层调用LINUX探究

    前言:该博客花了我一个下午得心血,全部手打,路过给个赞,拒绝抄袭!!!!!!!!!!!!!!!!!!!!!!!!! 简单的SOCKET通信程序 先从一段简单的JAVA程序性开始写起,这里我们才用半双工 ...

  3. 内网环境搭建NTP服务器

    说在前面:ntp和ntpdate区别 ①两个服务都是centos自带的(centos7中不自带ntp).ntp的安装包名是ntp:ntpdate的安装包是ntpdate.他们并非由一个安装包提供. ② ...

  4. 探究 C# 中的 char 、 string(一)

    目录 探究 C# 中的 char . string(一) 1. System.Char 字符 2. 字符处理 3. 全球化 4. System.String 字符串 4.1 字符串搜索 4.2 字符串 ...

  5. 设计模式之代理模式--PHP

    代理模式是常用的设计模式之一,代理模式为对象的间接访问提供了一套方案,可以对对象访问进行控制,也能监控对象访问相关的数据信息. 代理模式(Proxy)就是给某一个对象提供代理,在由代理控制原对象的访问 ...

  6. kubeadm 报错 error execution phase preflight: couldn’t validate the identity of the API Server: abort connecting to API servers after timeout of 5m0s

    原因:master节点的token过期了 解决:重新生成新token 在master重新生成token # kubeadm token create 424mp7.nkxx07p940mkl2nd # ...

  7. 远程连接mysql出现1045错误的解决办法

    第一步:停止MySQL服务 第二步:在你MySQL的安装目录下找到my.ini,文件,打开文件查找到 [mysqld] ,在其下方添加上一行 skip-grant-tables,然后保存. 第三步:启 ...

  8. c语言l博客作业03

    问题 答案 这个作业属于哪个课程 c语言程序设计ll 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2019-3/homework/8727 我在这 ...

  9. c语言I博客专业04

    问题 答案 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/8655 我在 ...

  10. Spring 读取资源

    Spring 读取资源 主要介绍3种方式(当然不止三种,但是这三种基本能应付大多需求)FileSystemResource:以文件的绝对路径方式进行访问ClassPathResourcee:以类路径的 ...