学习oop多态
1.方法重载
2.方法重写
3.里氏替换原则
方法重载:构造函数就属于特殊的方法重载
方法重载是指同一个类中相同方法的不同行为
方法重载的特点:
1.方法名必须相同
2.参数列表必须不相同(这里的不相同是参数类型,参数个数,以及参数顺序)
3.在有相同参数列表个数的前提下,方法返回值不作为判断方法是否重载的依据
using System;
namespace OOP多态 {
class Person{
public void Say(int age,string japanese){
Console.WriteLine ("说中国话!~");
}
public void Say(string japanese,int age){
Console.WriteLine ("说日本话!~");
}
}
//练习1: 利用多态实现加法器,要求至少实现4种重载方式
class Jisuan{
public int Szys(int a,int b){
return a + b;
}
public float Szys(float a,int b){
return a - b;
}
public float Szys(int a,float b){
return a * b;
}
public float Szys(float a,float b){
return a / b;
}
//练习2: 在上面的基础上,利用最下面的方法重载实现加减乘除
public float Szys(string flag,float a,float b){
float result = 0;
switch (flag) {
case "+":
result = a + b;
break;
case "-":
result = a - b;
break;
case "*":
result = a * b;
break;
case "/":
if (b == 0) {
result = 0;
} else {
result = a / b;
}
break;
default:
break;
}
return result;
}
// 练习3:创建重载方法,求两个数的乘积,参数类型分别为整型,单精度浮点型,双精度浮点型。
public float Cj(int a,float b){
return a * b;
}
public double Cj(int a,double c){
return a * c;
}
public double Cj(float b,double c){
return b * c;
}
}
class English{
public void SayHi(string chinaese){
Console.WriteLine ();
}
}
// 练习4:设计一个语言类,该类有一个方法可以将传递过来的语言,转换成你想转换的语言类型
//该方法还可以通过接收一个对象,显示该对象会说的语种。
class MainClass {
public static void Main (string[] args) {
Jisuan j = new Jisuan();
// 1.
Console.WriteLine (j.Szys (6,5));
Console.WriteLine (j.Szys (6.0f,5));
Console.WriteLine (j.Szys (6,5.0f));
Console.WriteLine (j.Szys (6.0f,5.0f));
// 2.
Console.WriteLine (j.Szys ("+",8.0f,5.0f));
Console.WriteLine (j.Szys ("-",8.0f,5.0f));
Console.WriteLine (j.Szys ("*",8.0f,5.0f));
Console.WriteLine (j.Szys ("/",8.0f,5.0f));
Console.WriteLine (j.Cj (5,7.0f));
Console.WriteLine (j.Cj (5,8.0f));
Console.WriteLine (j.Cj (7.0f,8.0f));
}
}
}