虚方法
来源:互联网 发布:java windows相对路径 编辑:程序博客网 时间:2024/05/04 19:03
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 虚方法
{
class class1
{
///虚方法8-4 ************************************************
///默认的方法被指定为私有的,只能在当前类中进行访问
///需要在其他类中访问就需要指定为public 访问权限最高,只要在项目内部都可以访问
public virtual void virtualMethod() //因为虚方法能在派生类中进行重写
{
Console.WriteLine("这是一个虚方法");
}
public void nonVirtualMehtod()
{
Console.WriteLine("这是一个非虚方法");
}
}
//非虚方法的实现是一成不变的:无论该方法是在声明他的类的实例上还是在派生类的
//实例上调用,实现均相同
//于此相反,虚方法的实现可以由派生类取代,取代所继承的虚方法的实现的过程称为重写(override)该方法。****************
//在虚方法调用中,该调用所涉及的那个实例的运行时类型确定了要被调用的究竟是该方法的哪一种实现,在非虚方法调用中,相关的实例的编译时类型是确定性因素
class class2 : class1 //将class2继承于class1
{
//重写一个虚方法
public override void virtualMethod()
{
Console.WriteLine("这是一个新写的虚方法");
}
public new void nonVirtualMehtod()
{
Console.WriteLine("这是一个新的方法");
}
}
class Program
{
static void Main(string[] args)
{
class1 c1 = new class1(); //将类实例化
c1.virtualMethod();
c1.nonVirtualMehtod();
class2 c2 = new class2();
c2.virtualMethod();
c2.nonVirtualMehtod();
c1 = c2;
c1.virtualMethod();
c1.nonVirtualMehtod();
Console.ReadKey();
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 虚方法
{
class class1
{
///虚方法8-4 ************************************************
///默认的方法被指定为私有的,只能在当前类中进行访问
///需要在其他类中访问就需要指定为public 访问权限最高,只要在项目内部都可以访问
public virtual void virtualMethod() //因为虚方法能在派生类中进行重写
{
Console.WriteLine("这是一个虚方法");
}
public void nonVirtualMehtod()
{
Console.WriteLine("这是一个非虚方法");
}
}
//非虚方法的实现是一成不变的:无论该方法是在声明他的类的实例上还是在派生类的
//实例上调用,实现均相同
//于此相反,虚方法的实现可以由派生类取代,取代所继承的虚方法的实现的过程称为重写(override)该方法。****************
//在虚方法调用中,该调用所涉及的那个实例的运行时类型确定了要被调用的究竟是该方法的哪一种实现,在非虚方法调用中,相关的实例的编译时类型是确定性因素
class class2 : class1 //将class2继承于class1
{
//重写一个虚方法
public override void virtualMethod()
{
Console.WriteLine("这是一个新写的虚方法");
}
public new void nonVirtualMehtod()
{
Console.WriteLine("这是一个新的方法");
}
}
class Program
{
static void Main(string[] args)
{
class1 c1 = new class1(); //将类实例化
c1.virtualMethod();
c1.nonVirtualMehtod();
class2 c2 = new class2();
c2.virtualMethod();
c2.nonVirtualMehtod();
c1 = c2;
c1.virtualMethod();
c1.nonVirtualMehtod();
Console.ReadKey();
}
}
}
0 0
- c#方法-虚方法
- 虚方法、重写方法和抽象方法
- 静态方法,虚方法和动态方法
- 虚方法
- 虚方法
- 虚方法
- 虚方法
- 虚方法
- 虚方法
- 虚方法
- 虚方法
- 虚方法 纯虚方法
- 虚方法&非虚方法
- 方法重新和虚方法
- 抽象方法与虚方法
- 抽象方法和虚方法
- 虚方法与动态方法
- new方法和虚方法
- bash scp command not found的解决方法
- Difference Between ASP.NET Server Controls,HTML Server Controls and HTML Intrinsic Controls
- 线段树板子
- RecylerView基本用法
- 一道面试题的反思
- 虚方法
- 用srvany.exe将程序安装为windows服务的步骤链接
- JSON 之 jackson 用法
- linux下TCP Socket编程C语言小实例
- zzu数学 实验三最佳分数近似国歌
- linux内核数据结构-顺序存储链表(1)
- 文件缓存回写简述
- 什么是rawType
- Java Web 之CSS