一、继承
1、被继承类——父类/基类;继承类——子类/派生类;
2、子类可以拥有父类的全部特性;
3、子类可以扩展父类功能,实现重用;
4、C#只支持单继承。
using System;
namespace lesson01{
public class Person {
public string name;
}
public class Student : Person { //继承父类——修饰符 class 子类名 :父类名
public void Gua () {
Console.WriteLine ("哎呀,挂科了");
}
}
class MainClass {
public static void Main ( string[] args ) {
Person p = new Person () ;
p.name = "张三";
Student s = new Student () ;
s.name = "李四";
s.Gua () ;
}
}
}
二、方法重载——方法名一样的多个方法,便于调用。
1、方法名一致;
2、方法中参数列表不同(参数类型不同、参数个数不同);
3、在方法重载中,与返回值类型无关。
using System;
namespace lesson01{
public class Person {
public int Sum (int a, int b) {
return a + b;
}
public float Sum (float a, float b) {
return a + b;
}
public int Sum (int a, int b,int c) {
return a + b + c;
}
}
class MainClass {
public static void Main ( string[] args ) {
Person p = new Person () ; //系统会自动根据实际参数类型和数量选择调用的方法。
Console.WriteLine (p.Sum (3,7) );
Console.WriteLine (p.Sum (3.1f,7.2f) );
Console.WriteLine (p.Sum (3,7,6) );
}
}
}
三、方法替换 ——子类继承父类后,可隐藏父类中的方法,在子类中重新实现。
using System;
namespace lesson01{
public class Super {
public void A () {
Console.WriteLine ("此方法在父类Super中定义");
}
}
public class Sub : Super {
public new void A () { //在子类中重新实现父类中定义的方法,加new关键字
Console.WriteLine ("此方法在子类Sub中定义");
}
}
class MainClass {
public static void Main ( string[] args ) {
Super super = new Super () ; //使用父类类型引用父类对象
super.A () ; //调用父类方法
Sub sub = new Sub () ; //使用子类类型引用子类对象
sub.A () ; //调用子类方法
Super c = new Sub () ; //使用父类类型引用子类对象
c.A () ; //调用父类方法
}
}
}
四、虚方法
1、方法和属性可以虚,字段不可以;
2、虚方法可以不用在类中;
3、虚方法可以在父类中实现。
using System;
namespace lesson01{
public class Super {
public virtual void B () { //虚方法要添加virtual关键字
Console.WriteLine ("此方法在父类Super中定义");
}
}
public class Sub : Super {
public override void B() { //重写使用override
Console.WriteLine ("此方法在子类Sub中定义");
}
}
class MainClass {
public static void Main ( string[] args ) {
Super super = new Super () ; //使用父类类型引用父类对象
super.B () ; //调用父类方法
Sub sub = new Sub () ; //使用子类类型引用子类对象
sub.B () ; //调用子类方法
//多态——使用父类类型,调用子类中实现的方法。
Super c = new Sub () ; //使用父类类型引用子类对象
c.B () ; //调用子类方法
}
}
}