C#复习日记(第三部分)

  1. 经过第一天,基础语法的学习(回忆算法跟表达式还有基本数组的概念)
  2. 第二天对类跟封装的学习,虽然原理不是很懂,但是总体来说,学到了蛮多。
  3. 那么第三天就是对面向对象部分的学习了,经过这一部分之后,我对很多java代码以及c#代码都能看得懂了,不过自己还是要找几个项目好好的写一下,以下写一下第三天的知识总结。

首先是第一个概念,继承。
1.1,继承. 可以让子类直接继承父类的字段,属性,方法(前提是不是私有的)
作为基类,我们尽可能把东西放在基类,这样子让子类有更大的扩展性。
//依赖倒置原则,尽可能的依赖抽象类

1.2,子类为了隐藏父类的方法,应该定义一个同名的方法来覆盖

new public void PrintName();

1.3.虚方法与多态,用virtual(不能带有函数)的基类的虚方法,
然后继承他的子类可以用override来进行重写跟之前的重载是不同的。
用这种方法来实现多态?

virtual public void speak();
//下面是子类
override public void speak();

1.4.那么还有一种是,抽象方法,用的是abstract,里面有方法跟属性,但是,不能自己实现
//这里与虚方法的不同就很明显,虚方法本身就是可以实现的,抽象方法需要在子类中才能实现。

abstract class Pet
    {
        public Pet(string name)
        {
            Name = name;
        }
        protected string Name;

        abstract public void printName();
    }
  class Dog : Pet
   
        public Dog(string name):base(name)
    
        override public void printName()
        {
            Console.WriteLine("我是" + Name);
          //  Console.ReadLine();
        }

1.5.密闭类,用sealed,密闭类是不希望被人通过继承来修改
而密闭方法是不需要被人重写这个方法

二,接口(interface)
指定一组函数成员,而不实现他们的引用的类型
//不过接口中的方法默认就是public,但也不可以加public。

而且,接口中的子类必须全部实现

2.1 结构和类
结构是在栈中存储的,是值类型,优点是【分配快,不需要gc?】【可以用ref提高效率】
类是在堆中存储的,是引用类型。

2.2 静态类,静态成员,static
这意味着他们将被所有的实例共享,而且他也有自己的静态构造函数。

2.3装箱,拆箱
装箱 指的是值类型转化成引用类型
本质上是在堆中创建了一个引用类型的副本,

int i=3;
object oi = null;
oi = i;

拆箱则是反过来

int i =3;
object oi =i;
int j =(int)oi;

2.4自定义转换
隐式转换是implicit
显式转换是operator

2.5重载运算符

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