C#高级进阶-[重载+重写+隐藏]方法
2018-03-12 本文已影响7人
xzhuan
Aitin原创稿件,转载请注明出处!
C#语法进阶 <重载+重写+隐藏>方法
/*
OOP多态
1 方法隐藏: 父类中的方法对于子类不一定适用,此时在子类创建与父类同名方法<并在方法前+ new关键字> 将遮盖掉父类方法
2.方法重写:
2.1 为解决父类所定义的方法在子类中不适用(虚方法)
2.2 或父类没有实现(抽象方法)
2.3 三种方法可以重写
2.3.1 abstract抽象方法 在子类必须重写,除非子类也是抽象类
2.3.2 virtual虚方法 在子类可以重写,父类方法做法与子类不同
2.3.3 override重写方法 已经重写过的方法,在子类还可以继续被重写<必须在方法前+override关键字>
2.4 sealed 修饰符(密封,封闭)
2.4.1 用在方法前必须和override一起,该方法 无法继续被重写
2.4.2 用在类前,该类 无法被继承,但是 可以new对象
*/
namespace LearnDemo20180303
{
class Program1
{
//static void Main1(string[] args)
//{
// //简单 继承
// //调用Run方法 3种写法
// Animal ani0 = new Animal();
// ani0.Run();
// Dog dog0 = new Dog();
// dog0.Run();
// Animal ani1 = new Dog();
// ani1.Run();
// Console.ReadKey();
//}
static void Main(string[] args)
{
//简单 继承
//调用Run方法 3种写法
Animal ani0 = new Animal();
ani0.Run();
Dog dog0 = new Dog();
dog0.Run();
Animal ani1 = new Dog();
ani1.Run();
Console.ReadKey();
}
}
class Animal
{
public void Run()
{
Console.WriteLine("Animal Run...");
}
}
class Dog : Animal
{
new public void Run() //方法 隐藏技术
{
Console.WriteLine("Dog Run...");
}
public void Wawa()
{
}
}
}
- 重载
namespace LearnDemo20180303
{
class Program
{
//static void Main(string[] args)
//{
// Solution01.BeginCaculate();
//}
}
public static class Solution01
{
private static double area;
/// <summary>
/// 作为任务的分发,以及交互
/// </summary>
public static void BeginCaculate()
{
Console.WriteLine("我可以帮你计算一个图形的面积:包括圆形,矩形,三角形");
Console.WriteLine("请输入你要计算的图像");
string type = Console.ReadLine();
switch (type)
{
case "圆形":
Console.WriteLine("请输入半径");
float r = int.Parse(Console.ReadLine());
AreaCaculate(r);
break;
case "矩形":
Console.WriteLine("请输入长");
float x = int.Parse(Console.ReadLine());
Console.WriteLine("请输入宽");
float y = int.Parse(Console.ReadLine());
AreaCaculate(x, y);
break;
case "三角形":
Console.WriteLine("请输入底边长");
float d = int.Parse(Console.ReadLine());
Console.WriteLine("请输入高");
float h = int.Parse(Console.ReadLine());
AreaCaculate(d, h,true);
break;
default:
Console.WriteLine("输入错误,程序重新启动...");
Console.WriteLine();
BeginCaculate();
break;
}
Console.WriteLine("面积为:" + area);
Console.WriteLine("计算Success,程序重新启动...");
Console.WriteLine();
BeginCaculate();
}
/// <summary>
/// 计算圆的面积
/// </summary>
/// <param name="radius">半径</param>
private static void AreaCaculate(float radius)
{
area = radius * radius * Math.PI;
}
/// <summary>
/// 计算矩形面积
/// </summary>
private static void AreaCaculate(float x, float y)
{
area = x * y;
}
/// <summary>
/// 计算三角形面积
/// </summary>
/// <param name="bottom">底</param>
/// <param name="hegith">高</param>
/// <param name="value">是否为三角形</param>
private static void AreaCaculate(float bottom, float hegith, bool value)
{
if (value)
{
area = bottom * hegith * 0.5f;
}
}
}
}
案列简单, 活学活用才是能力