目录
C# 基础知识(七)_封装,继承,多态
面向对象的三个基本特征是:封装、继承、多态。
封装
封装 被定义为"把一个或多个项目封闭在一个物理的或者逻辑的包中。
C# 支持的访问修饰符如下所示:(必须要懂,要不然没办法合作)
public:所有对象都可以访问;
private:对象本身在对象内部可以访问;
protected:只有该类对象及其子类对象可以访问
internal:同一个程序集的对象可以访问;
protected internal:访问限于当前程序集或派生自包含类的类型。
继承
C#语言中现有类(基类、父类)上建立新类(派生类、子类)的处理过程。
基类和派生类
C# 中只支持单继承,也就是说一个派生类只能继承一个基类。
class 基类
{
}
class 派生类:基类
{
}
基类的初始化
派生类继承了基类的成员变量和成员方法。因此父类对象应在子类对象创建之前被创建。可以在成员初始化列表中进行父类的初始化。
using System;
namespace Notes
{
class People
{
public string name;
public People(string name)
{
this.name = name;
}
}
class Student : People
{
public Student(string name) : base(name)
{
}
}
class Program
{
static void Main(string[] args)
{
Student s = new Student("HAHA");
Console.WriteLine(s.name);
Console.ReadKey();
}
}
}
多重继承
多重继承指的是一个类别可以同时从多于一个父类继承行为与特征的功能。与单一继承相对,单一继承指一个类别只可以继承自一个父类。
C# 不支持多重继承。但是可以使用接口来实现多重继承。
多态
多态是同一个行为具有多个不同表现形式或形态的能力。
在 C# 中具有两种类型的多态:
编译时多态(静态多态性):通过 C# 中的方法重载和运算符重载来实现编译时多态,也称为静态绑定或早期绑定;
运行时多态(动态多态性):通过方法重载实现的运行时多态,也称为动态绑定或后期绑定。
编译时多态
函数重载
using System;
namespace Notes
{
class Program
{
static void Main(string[] args)
{
int result = Addition(1, 2);
Console.WriteLine(result);
result = Addition(1, 2, 3);
Console.WriteLine(result);
Console.ReadKey();
}
public static int Addition(int a, int b)
{
return a + b;
}
public static int Addition(int a, int b, int c)
{
return a + b + c;
}
}
}
运行时多态
动态多态性是通过 抽象类(abstract) 和 虚方法 (virtual)实现的。
using System;
namespace Notes
{
public abstract class Animal
{
public abstract string GetName();//抽象
public virtual void Eat(string foodName)//虚方法
{
Console.WriteLine("eat " + foodName);
}
}
public class Dog : Animal
{
public override string GetName()
{
return "Dog";
}
public override void Eat(string foodName)
{
Console.WriteLine("不吃 " + foodName);
}
}
class Program
{
static void Main(string[] args)
{
Dog d = new Dog();
Console.WriteLine(d.GetName());
d.Eat("青草");
Console.ReadKey();
}
}
}