C#封装、继承、多态

笔记【1】之 -- 面向对象 

一、面向对象是什么? 

面向对象就是一种编码的思想,简称(oop思想),这种编程思想可以让你在编码的过程中,对于类的使用变得更加的方便快捷,在不同的场合使用不同的类和对象,会让你的程序维护起来更加方便,让你的程序结构更加清晰。 

二、面向对象有哪些内容?(三大特性) 【封装、继承、多态】

1、封装:

封装就是把不需要展示出的或者私密的代码抽离封装成抽象的类,并且这个类可以把自己的数据和方法只让可信的类或者对象使用,对不可信的进行信息隐藏。

如何进行进行隐藏,下面是几种访问修饰符

public //允许任何人来访问p
Internal //在同一项目中均可访问
Protected // 继承时子类可以对基类有访问权
Protected Internal //唯一的一种组合限制修饰符,只可以被本组合体内所有的类和这些类的子类所访问
Private //只允许同类中的成员所访问

其实就是把可以重复使用的代码,用方法装载起来,传入参数,返回参数;让代码更加容易维护,这样就不必每次访问这个属性的时候,还需要再写一次重复的代码。

2、继承

(1)简单的继承

解释:

继承简单的解释就是,子承父业。

父类也称为基类,子类称派生类,子类可以调用父类中所有的资源。
好处:
可传递的特点,无需多写父类的属性,就可以直接调用父类的属性,代码可以多次使用,提高代码的复用性并且减少代码的冗余。
缺点:
缺点也是很明显,子类和父类有着很紧密的关联性(也就是交叉性),改了父类的方法,继承于它的所有子类也将全部被修改。

(2)抽象类(abstract)、接口(interface)

抽象类中就是像简单的类一样,只是多了一个可以约束派生类的功能。
抽象类约束派生类(子类),就会添加抽象类,抽象类不能有方法体。
接口也是约束继承它的类,继承它的类必须实现接口中所有的方法和属性。

3、多态

(1)方法的重载

方法重构最大的特点就是方法名相同,参数不同(同名不同参)
方法重写则是在有父类的情况下,并且重新的这个方法在父类中必须是虚方法,同时还要加上关键字override。

public void A()
{
	Console.WriteLine("我要吃馒头");
}
public void A(string eat)
{
	Console.WriteLine("我要吃饺子");
}
static void Main()
{
	A();//这是调用了【吃馒头】的方法
	string eat = "Eat";
	A(eat); //这是调用了【吃饺子】的方法
}

(2)方法的重写(虚方法(virtual))

如果要重写父类的方法,那么父类的方法就必须是虚方法,子类就利用override关键字重写父类的方法

public class Father //父类
{
    public virtual void Eat() 
    {
        Console.WriteLine("我要吃馒头");
    }

}
public class Son : Father       //继承父类,用 :父类类名
{
    public override void Eat()
    {
        Console.WriteLine("我要吃饺子");
    }
}

你可能感兴趣的:(c#)